Allow sorting on metadata keys.
This makes it possible to specify metadata keys for the albums_sort_attr and medias_sort_attr configuration options. This is done by prefixing the key with 'meta.', so e.g. albums_sort_attr = 'meta.order' will sort albums on the 'order' metadata key (collected from the .md files in each directory). Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
This commit is contained in:
@@ -314,7 +314,12 @@ class Album(UnicodeMixin):
|
||||
if self.subdirs:
|
||||
if albums_sort_attr:
|
||||
root_path = self.path if self.path != '.' else ''
|
||||
key = lambda s: strxfrm(getattr(
|
||||
if albums_sort_attr.startswith("meta."):
|
||||
meta_key = albums_sort_attr.split(".", 1)[1]
|
||||
key = lambda s: strxfrm(
|
||||
self.gallery.albums[join(root_path, s)].meta[meta_key][0])
|
||||
else:
|
||||
key = lambda s: strxfrm(getattr(
|
||||
self.gallery.albums[join(root_path, s)], albums_sort_attr))
|
||||
else:
|
||||
key = strxfrm
|
||||
@@ -328,6 +333,9 @@ class Album(UnicodeMixin):
|
||||
if self.medias:
|
||||
if medias_sort_attr == 'date':
|
||||
key = lambda s: s.date or datetime.now()
|
||||
elif medias_sort_attr.startswith('meta.'):
|
||||
meta_key = medias_sort_attr.split(".", 1)[1]
|
||||
key = lambda s: strxfrm(s.meta[meta_key])
|
||||
else:
|
||||
key = lambda s: strxfrm(getattr(s, medias_sort_attr))
|
||||
|
||||
|
||||
@@ -101,14 +101,16 @@ thumb_size = (280, 210)
|
||||
# Use symbolic links instead of copying the original images
|
||||
# orig_link = False
|
||||
|
||||
# Attribute of Album objects which is used to sort medias (eg 'title').
|
||||
# Attribute of Album objects which is used to sort medias (eg 'title'). To sort
|
||||
# on a metadata key, use 'meta.key'.
|
||||
# albums_sort_attr = 'name'
|
||||
|
||||
# Reverse sort for albums
|
||||
# albums_sort_reverse = False
|
||||
|
||||
# Attribute of Media objects which is used to sort medias. 'date' can be used
|
||||
# to sort with EXIF dates.
|
||||
# to sort with EXIF dates, and 'meta.key' to sort on a metadata key (which then
|
||||
# must exist for all images).
|
||||
# medias_sort_attr = 'filename'
|
||||
|
||||
# Reverse sort for medias
|
||||
|
||||
Reference in New Issue
Block a user