Update closest_photodb to take starting path argument.

master
voussoir 2021-05-16 21:08:51 -07:00
parent 399d27bb44
commit 26d5ff5730
No known key found for this signature in database
GPG Key ID: 5F7554F8C26DACCB
5 changed files with 10 additions and 8 deletions

View File

@ -1953,21 +1953,20 @@ class PhotoDB(
self.sql.commit() self.sql.commit()
@classmethod @classmethod
def closest_photodb(cls, *args, **kwargs): def closest_photodb(cls, path, *args, **kwargs):
''' '''
Starting from the cwd and climbing upwards towards the filesystem root, Starting from the cwd and climbing upwards towards the filesystem root,
look for an existing Etiquette data directory and return the PhotoDB look for an existing Etiquette data directory and return the PhotoDB
object. If none exists, raise exceptions.NoClosestPhotoDB. object. If none exists, raise exceptions.NoClosestPhotoDB.
''' '''
cwd = pathclass.cwd() starting = path
path = cwd
while True: while True:
if path.with_child(constants.DEFAULT_DATADIR).is_dir: if path.with_child(constants.DEFAULT_DATADIR).is_dir:
break break
parent = path.parent parent = path.parent
if path == parent: if path == parent:
raise exceptions.NoClosestPhotoDB(cwd.absolute_path) raise exceptions.NoClosestPhotoDB(starting.absolute_path)
path = parent path = parent
path = path.with_child(constants.DEFAULT_DATADIR) path = path.with_child(constants.DEFAULT_DATADIR)

View File

@ -30,7 +30,7 @@ def find_photodb():
pass pass
# If this raises, main will catch it. # If this raises, main will catch it.
photodb = etiquette.photodb.PhotoDB.closest_photodb(log_level=LOG_LEVEL) photodb = etiquette.photodb.PhotoDB.closest_photodb(cwd, log_level=LOG_LEVEL)
photodbs[cwd] = photodb photodbs[cwd] = photodb
return photodb return photodb

View File

@ -58,7 +58,7 @@ def etiquette_flask_launch(
site.localhost_only = True site.localhost_only = True
try: try:
backend.common.init_photodb(log_level=LOG_LEVEL) backend.common.init_photodb(path=pathclass.cwd(), log_level=LOG_LEVEL)
except etiquette.exceptions.NoClosestPhotoDB as exc: except etiquette.exceptions.NoClosestPhotoDB as exc:
pipeable.stderr(exc.error_message) pipeable.stderr(exc.error_message)
pipeable.stderr('Try `etiquette_cli.py init` to create the database.') pipeable.stderr('Try `etiquette_cli.py init` to create the database.')

View File

@ -6,6 +6,8 @@ gunicorn etiquette_flask_prod:site --bind "0.0.0.0:PORT" --access-logfile "-"
''' '''
import werkzeug.middleware.proxy_fix import werkzeug.middleware.proxy_fix
from voussoirkit import pathclass
import backend import backend
backend.site.wsgi_app = werkzeug.middleware.proxy_fix.ProxyFix(backend.site.wsgi_app) backend.site.wsgi_app = werkzeug.middleware.proxy_fix.ProxyFix(backend.site.wsgi_app)
@ -13,4 +15,4 @@ backend.site.wsgi_app = werkzeug.middleware.proxy_fix.ProxyFix(backend.site.wsgi
site = backend.site site = backend.site
site.debug = False site.debug = False
backend.common.init_photodb() backend.common.init_photodb(path=pathclass.cwd())

View File

@ -10,6 +10,7 @@ import sys
import traceback import traceback
from voussoirkit import interactive from voussoirkit import interactive
from voussoirkit import pathclass
from voussoirkit import pipeable from voussoirkit import pipeable
from voussoirkit import vlogging from voussoirkit import vlogging
@ -41,7 +42,7 @@ def erepl_argparse(args):
global P global P
try: try:
P = etiquette.photodb.PhotoDB.closest_photodb(log_level=LOG_LEVEL) P = etiquette.photodb.PhotoDB.closest_photodb(pathclass.cwd(), log_level=LOG_LEVEL)
except etiquette.exceptions.NoClosestPhotoDB as exc: except etiquette.exceptions.NoClosestPhotoDB as exc:
pipeable.stderr(exc.error_message) pipeable.stderr(exc.error_message)
pipeable.stderr('Try `etiquette_cli.py init` to create the database.') pipeable.stderr('Try `etiquette_cli.py init` to create the database.')