diff --git a/etiquette/__init__.py b/etiquette/__init__.py index 503d295..498b1a6 100644 --- a/etiquette/__init__.py +++ b/etiquette/__init__.py @@ -6,3 +6,14 @@ from . import objects from . import photodb from . import searchhelpers from . import tag_export + +__all__ = [ + 'constants', + 'decorators', + 'exceptions', + 'helpers', + 'objects', + 'photodb', + 'searchhelpers', + 'tag_export', +] diff --git a/etiquette/helpers.py b/etiquette/helpers.py index 9ffaddb..a141958 100644 --- a/etiquette/helpers.py +++ b/etiquette/helpers.py @@ -7,7 +7,6 @@ import hashlib import mimetypes import os import PIL.Image -import re import zipstream from voussoirkit import bytestring diff --git a/etiquette/objects.py b/etiquette/objects.py index 807a686..5695d5b 100644 --- a/etiquette/objects.py +++ b/etiquette/objects.py @@ -357,8 +357,8 @@ class Album(ObjectBase, GroupableMixin): @decorators.required_feature('album.edit') @decorators.transaction - def add_child(self, *args, **kwargs): - return super().add_child(*args, **kwargs) + def add_child(self, member): + return super().add_child(member) @decorators.required_feature('album.edit') @decorators.transaction @@ -1308,7 +1308,11 @@ class Photo(ObjectBase): new_path.assert_not_exists() - self.photodb.log.info('Renaming file "%s" -> "%s".', old_path.absolute_path, new_path.absolute_path) + self.photodb.log.info( + 'Renaming file "%s" -> "%s".', + old_path.absolute_path, + new_path.absolute_path, + ) new_path.parent.makedirs(exist_ok=True) @@ -1476,7 +1480,7 @@ class Tag(ObjectBase, GroupableMixin): @decorators.required_feature('tag.edit') @decorators.transaction def add_child(self, member): - ret = self.__add_child(member) + ret = super().add_child(member) if ret is BAIL: return BAIL @@ -1486,10 +1490,8 @@ class Tag(ObjectBase, GroupableMixin): @decorators.required_feature('tag.edit') @decorators.transaction def add_children(self, members): - bail = True - for member in members: - bail = (self.__add_child(member) is BAIL) and bail - if bail: + ret = super().add_children(members) + if ret is BAIL: return BAIL self.photodb.caches['tag_exports'].clear() diff --git a/etiquette/photodb.py b/etiquette/photodb.py index 1a25129..a79d0e8 100644 --- a/etiquette/photodb.py +++ b/etiquette/photodb.py @@ -964,8 +964,8 @@ class PDBPhotoMixin: query = f'{"-" * 80}\n{query}\n{"-" * 80}' self.log.debug('\n%s %s', query, bindings) - #explain = self.sql_execute('EXPLAIN QUERY PLAN ' + query, bindings) - #print('\n'.join(str(x) for x in explain.fetchall())) + # explain = self.sql_execute('EXPLAIN QUERY PLAN ' + query, bindings) + # print('\n'.join(str(x) for x in explain.fetchall())) generator = self.sql_select(query, bindings) seen_albums = set() results_received = 0 diff --git a/etiquette/tag_export.py b/etiquette/tag_export.py index 06133c8..48e6ddc 100644 --- a/etiquette/tag_export.py +++ b/etiquette/tag_export.py @@ -57,7 +57,8 @@ def flat_dict(tags, include_synonyms=True): for equaling the main tag versus existing in the rest of the subtree. ''' result = {} - def recur(tag): + + def recurse(tag): try: return result[tag] except KeyError: @@ -67,7 +68,7 @@ def flat_dict(tags, include_synonyms=True): my_result.add(tag) for child in tag.get_children(): - my_result.update(recur(child)) + my_result.update(recurse(child)) result[tag] = my_result @@ -77,7 +78,7 @@ def flat_dict(tags, include_synonyms=True): return my_result for tag in tags: - recur(tag) + recurse(tag) return result diff --git a/frontends/etiquette_cli.py b/frontends/etiquette_cli.py index 8d0f576..e87ff6f 100644 --- a/frontends/etiquette_cli.py +++ b/frontends/etiquette_cli.py @@ -246,7 +246,6 @@ def easybake_argparse(args): photodb.commit() def export_symlinks_argparse(args): - photodb = find_photodb() destination = pathclass.Path(args.destination) destination.makedirs(exist_ok=True) @@ -594,12 +593,12 @@ digest: flags: --exclude_directories A B C: Any directories matching any pattern of A, B, C... will be skipped. - These patterns may be absolute paths like 'D:\temp', plain names like + These patterns may be absolute paths like 'D:\\temp', plain names like 'thumbnails' or glob patterns like 'build_*'. --exclude_filenames A B C: Any filenames matching any pattern of A, B, C... will be skipped. - These patterns may be absolute paths like 'D:\somewhere\config.json', + These patterns may be absolute paths like 'D:\\somewhere\\config.json', plain names like 'thumbs.db' or glob patterns like '*.temp'. --glob_directories A B C: diff --git a/frontends/etiquette_flask/backend/__init__.py b/frontends/etiquette_flask/backend/__init__.py index 1ed45d1..c6df926 100644 --- a/frontends/etiquette_flask/backend/__init__.py +++ b/frontends/etiquette_flask/backend/__init__.py @@ -4,3 +4,11 @@ from . import endpoints from . import sessions site = common.site + +__all__ = [ + 'common', + 'decorators', + 'endpoints', + 'sessions', + 'site', +] diff --git a/frontends/etiquette_flask/backend/client_caching.py b/frontends/etiquette_flask/backend/client_caching.py index e7992f8..50821c2 100644 --- a/frontends/etiquette_flask/backend/client_caching.py +++ b/frontends/etiquette_flask/backend/client_caching.py @@ -3,8 +3,6 @@ import hashlib from voussoirkit import cacheclass from voussoirkit import spinal -import etiquette - class FileEtagManager: ''' The FileEtagManager serves ETag and Cache-Control headers for disk files to diff --git a/frontends/etiquette_flask/backend/endpoints/__init__.py b/frontends/etiquette_flask/backend/endpoints/__init__.py index f4b7f32..5cd9b44 100644 --- a/frontends/etiquette_flask/backend/endpoints/__init__.py +++ b/frontends/etiquette_flask/backend/endpoints/__init__.py @@ -4,3 +4,12 @@ from . import bookmark_endpoints from . import photo_endpoints from . import tag_endpoints from . import user_endpoints + +__all__ = [ + 'album_endpoints', + 'basic_endpoints', + 'bookmark_endpoints', + 'photo_endpoints', + 'tag_endpoints', + 'user_endpoints', +] diff --git a/frontends/etiquette_flask/backend/endpoints/album_endpoints.py b/frontends/etiquette_flask/backend/endpoints/album_endpoints.py index 9594697..da4e0f6 100644 --- a/frontends/etiquette_flask/backend/endpoints/album_endpoints.py +++ b/frontends/etiquette_flask/backend/endpoints/album_endpoints.py @@ -1,6 +1,5 @@ import flask; from flask import request import os -import time import urllib.parse from voussoirkit import flasktools diff --git a/frontends/etiquette_flask/backend/endpoints/tag_endpoints.py b/frontends/etiquette_flask/backend/endpoints/tag_endpoints.py index 76502e5..65e8361 100644 --- a/frontends/etiquette_flask/backend/endpoints/tag_endpoints.py +++ b/frontends/etiquette_flask/backend/endpoints/tag_endpoints.py @@ -1,5 +1,4 @@ import flask; from flask import request -import time from voussoirkit import flasktools diff --git a/utilities/database_upgrader.py b/utilities/database_upgrader.py index e0ad27c..93597b8 100644 --- a/utilities/database_upgrader.py +++ b/utilities/database_upgrader.py @@ -188,7 +188,8 @@ def upgrade_6_to_7(photodb): Most of the indices were renamed. ''' photodb.sql_execute('BEGIN') - indices = photodb.sql_select('SELECT name FROM sqlite_master WHERE type == "index" AND name NOT LIKE "sqlite_%"') + query = 'SELECT name FROM sqlite_master WHERE type == "index" AND name NOT LIKE "sqlite_%"' + indices = photodb.sql_select(query) indices = [name for (name,) in indices] for index in indices: photodb.sql_execute(f'DROP INDEX {index}')