From f56da728816d9d8b0cb162b308374e0395bd5e4b Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Sun, 20 Sep 2020 13:16:52 -0700 Subject: [PATCH] Return more sets from backend, do sorting on frontend. It's better semantically for these items coming out of the backend to be sets. Sorted lists are only relevant to human consumption at the frontend. --- etiquette/objects.py | 14 ++++---------- frontends/etiquette_flask/backend/jinja_filters.py | 5 ----- frontends/etiquette_flask/templates/album.html | 2 +- frontends/etiquette_flask/templates/photo.html | 2 +- 4 files changed, 6 insertions(+), 17 deletions(-) diff --git a/etiquette/objects.py b/etiquette/objects.py index 595ca79..14708d4 100644 --- a/etiquette/objects.py +++ b/etiquette/objects.py @@ -172,12 +172,7 @@ class GroupableMixin(metaclass=abc.ABCMeta): [self.id] ) child_ids = [row[0] for row in child_rows] - children = self.group_getter_many(child_ids) - - if isinstance(self, Tag): - children = sorted(children, key=lambda x: x.name) - else: - children = sorted(children, key=lambda x: x.id) + children = set(self.group_getter_many(child_ids)) return children def get_parents(self): @@ -417,8 +412,8 @@ class Album(ObjectBase, GroupableMixin): 'SELECT directory FROM album_associated_directories WHERE albumid == ?', [self.id] ) - directories = [x[0] for x in directory_rows] - directories = [pathclass.Path(x) for x in directories] + directories = (x[0] for x in directory_rows) + directories = set(pathclass.Path(x) for x in directories) return directories def get_photos(self): @@ -428,8 +423,7 @@ class Album(ObjectBase, GroupableMixin): [self.id] ) photo_ids = [row[0] for row in generator] - photos = self.photodb.get_photos_by_id(photo_ids) - photos = sorted(photos, key=lambda x: x.basename.lower()) + photos = set(self.photodb.get_photos_by_id(photo_ids)) return photos def has_any_associated_directory(self): diff --git a/frontends/etiquette_flask/backend/jinja_filters.py b/frontends/etiquette_flask/backend/jinja_filters.py index ce91191..3a727a9 100644 --- a/frontends/etiquette_flask/backend/jinja_filters.py +++ b/frontends/etiquette_flask/backend/jinja_filters.py @@ -43,11 +43,6 @@ def file_link(photo, short=False): basename = jinja2.filters.do_urlencode(photo.basename) return f'/file/{photo.id}/{basename}' -@filter_function -def sort_tags(tags): - tags = sorted(tags, key=lambda x: x.name) - return tags - @filter_function def timestamp_to_8601(timestamp): return datetime.datetime.utcfromtimestamp(timestamp).isoformat(' ') + ' UTC' diff --git a/frontends/etiquette_flask/templates/album.html b/frontends/etiquette_flask/templates/album.html index 18b3d05..fdeda27 100644 --- a/frontends/etiquette_flask/templates/album.html +++ b/frontends/etiquette_flask/templates/album.html @@ -256,7 +256,7 @@ const ALBUM_ID = undefined;

{{photos|length}} Photos

- {% for photo in photos %} + {% for photo in photos|sort(attribute='basename', case_sensitive=False) %} {{photo_card.create_photo_card(photo, view=view)}} {% endfor %}
diff --git a/frontends/etiquette_flask/templates/photo.html b/frontends/etiquette_flask/templates/photo.html index 28c4b5e..662e921 100644 --- a/frontends/etiquette_flask/templates/photo.html +++ b/frontends/etiquette_flask/templates/photo.html @@ -143,7 +143,7 @@ - {% set tags = photo.get_tags()|sort_tags %} + {% set tags = photo.get_tags()|sort(attribute='name') %} {% for tag in tags %}
  • {{tag_object.tag_object(tag, with_alt_description=True)}}