diff --git a/sigal/gallery.py b/sigal/gallery.py index 90b22c8..5561548 100644 --- a/sigal/gallery.py +++ b/sigal/gallery.py @@ -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)) diff --git a/sigal/templates/sigal.conf.py b/sigal/templates/sigal.conf.py index 8dca8be..a733ecc 100644 --- a/sigal/templates/sigal.conf.py +++ b/sigal/templates/sigal.conf.py @@ -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