mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Fix sorting by name of half stars in the Tag Browser
This commit is contained in:
parent
e3a77bf17f
commit
7d6c68c079
@ -98,7 +98,7 @@ def clean_user_categories(dbcache):
|
|||||||
pass
|
pass
|
||||||
return new_cats
|
return new_cats
|
||||||
|
|
||||||
def sort_categories(items, sort, first_letter_sort=False):
|
def sort_categories(items, sort, first_letter_sort=False, reverse=False):
|
||||||
if sort == 'popularity':
|
if sort == 'popularity':
|
||||||
key=lambda x:(-getattr(x, 'count', 0), sort_key(x.sort or x.name))
|
key=lambda x:(-getattr(x, 'count', 0), sort_key(x.sort or x.name))
|
||||||
elif sort == 'rating':
|
elif sort == 'rating':
|
||||||
@ -109,7 +109,7 @@ def sort_categories(items, sort, first_letter_sort=False):
|
|||||||
sort_key(x.sort or x.name))
|
sort_key(x.sort or x.name))
|
||||||
else:
|
else:
|
||||||
key=lambda x:sort_key(x.sort or x.name)
|
key=lambda x:sort_key(x.sort or x.name)
|
||||||
items.sort(key=key)
|
items.sort(key=key, reverse=reverse)
|
||||||
return items
|
return items
|
||||||
|
|
||||||
def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False):
|
def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False):
|
||||||
@ -134,6 +134,7 @@ def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False)
|
|||||||
|
|
||||||
for category, is_multiple, is_composite in find_categories(fm):
|
for category, is_multiple, is_composite in find_categories(fm):
|
||||||
tag_class = create_tag_class(category, fm)
|
tag_class = create_tag_class(category, fm)
|
||||||
|
sort_on, reverse = sort, False
|
||||||
if is_composite:
|
if is_composite:
|
||||||
if bids is None:
|
if bids is None:
|
||||||
bids = dbcache._all_book_ids() if book_ids is None else book_ids
|
bids = dbcache._all_book_ids() if book_ids is None else book_ids
|
||||||
@ -144,15 +145,18 @@ def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False)
|
|||||||
else:
|
else:
|
||||||
cat = fm[category]
|
cat = fm[category]
|
||||||
brm = book_rating_map
|
brm = book_rating_map
|
||||||
if cat['datatype'] == 'rating' and category != 'rating':
|
dt = cat['datatype']
|
||||||
brm = dbcache.fields[category].book_value_map
|
if dt == 'rating':
|
||||||
|
if category != 'rating':
|
||||||
|
brm = dbcache.fields[category].book_value_map
|
||||||
|
sort_on, reverse = 'rating', True
|
||||||
cats = dbcache.fields[category].get_categories(
|
cats = dbcache.fields[category].get_categories(
|
||||||
tag_class, brm, lang_map, book_ids)
|
tag_class, brm, lang_map, book_ids)
|
||||||
if (category != 'authors' and cat['datatype'] == 'text' and
|
if (category != 'authors' and dt == 'text' and
|
||||||
cat['is_multiple'] and cat['display'].get('is_names', False)):
|
cat['is_multiple'] and cat['display'].get('is_names', False)):
|
||||||
for item in cats:
|
for item in cats:
|
||||||
item.sort = author_to_author_sort(item.sort)
|
item.sort = author_to_author_sort(item.sort)
|
||||||
sort_categories(cats, sort, first_letter_sort=first_letter_sort)
|
sort_categories(cats, sort_on, first_letter_sort=first_letter_sort, reverse=reverse)
|
||||||
categories[category] = cats
|
categories[category] = cats
|
||||||
|
|
||||||
# Needed for legacy databases that have multiple ratings that
|
# Needed for legacy databases that have multiple ratings that
|
||||||
|
Loading…
x
Reference in New Issue
Block a user