Merge pull request #468 from tudacs/sort_precedence

List of sort-properties as fallback instead of zero-length string
This commit is contained in:
Simon Conseil
2022-06-19 12:47:33 -04:00
committed by GitHub
4 changed files with 36 additions and 9 deletions

View File

@@ -488,18 +488,26 @@ class Album:
reverse = False
root_path = self.path if self.path != '.' else ''
if albums_sort_attr.startswith("meta."):
meta_key = albums_sort_attr.split(".", 1)[1]
def sort_key(s):
album = self.gallery.albums[join(root_path, s)]
return album.meta.get(meta_key, [''])[0]
def sort_key(s):
sort_attr = albums_sort_attr
if not isinstance(sort_attr,list):
sort_attr = [sort_attr]
else:
album = self.gallery.albums[join(root_path, s)]
def sort_key(s):
album = self.gallery.albums[join(root_path, s)]
return getattr(album, albums_sort_attr)
for k in sort_attr:
try:
if k.startswith("meta."):
meta_key = k.split(".", 1)[1]
return album.meta.get(meta_key)[0]
else:
return getattr(album, k)
except AttributeError:
continue
except TypeError:
continue
return ''
key = natsort_keygen(key=sort_key, alg=ns.LOCALE)
self.subdirs.sort(key=key, reverse=reverse)

View File

@@ -1,3 +1,5 @@
Title: An example sub-category
Thumbnail: 11.jpg
Order: 03
PartialOrder: 00
PartialOrderB: test4

View File

@@ -11,6 +11,8 @@ links = [
("Another link", "http://example.org"),
]
albums_sort_attr = [ "meta.nokey", "nosuchattribute", "name" ]
files_to_copy = (("../watermark.png", "watermark.png"),)
plugins = [

View File

@@ -247,6 +247,21 @@ def test_albums_sort(settings):
a.sort_subdirs('meta.order')
assert [d.meta['order'][0] for d in a.albums] == list(reversed(orders))
settings['albums_sort_reverse'] = False
a = Album('dir1', settings, album['subdirs'], album['medias'], gal)
a.sort_subdirs(['meta.partialorder','meta.order'])
assert [d.name for d in a.albums] == list(['test1','test2','test3'])
settings['albums_sort_reverse'] = False
a = Album('dir1', settings, album['subdirs'], album['medias'], gal)
a.sort_subdirs(['meta.partialorderb','name'])
assert [d.name for d in a.albums] == list(['test2','test3','test1'])
settings['albums_sort_reverse'] = True
a = Album('dir1', settings, album['subdirs'], album['medias'], gal)
a.sort_subdirs(['meta.partialorderb','name'])
assert [d.name for d in a.albums] == list(['test1','test3','test2'])
def test_medias_sort(settings):
gal = Gallery(settings, ncpu=1)