This commit is contained in:
Kovid Goyal 2021-10-27 20:32:56 +05:30
commit 1eea54d6b5
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -118,12 +118,14 @@ def clean_user_categories(dbcache):
numeric_collation = prefs['numeric_collation']
def first_digit(x):
c = icu_upper(x.sort or x.name or ' ')[0]
def sort_key_for_name_and_first_letter(x):
v1 = icu_upper(x.sort or x.name)
v2 = v1 or ' '
# The idea is that '9999999999' is larger than any digit so all digits
# will sort in front. Non-digits will sort according to their ICU first letter
return c if numeric_collation and c.isdigit() else '9999999999'
c = v2[0]
return (c if numeric_collation and c.isdigit() else '9999999999',
collation_order(v2), sort_key(v1))
category_sort_keys = {True:{}, False: {}}
category_sort_keys[True]['popularity'] = category_sort_keys[False]['popularity'] = \
@ -131,7 +133,7 @@ category_sort_keys[True]['popularity'] = category_sort_keys[False]['popularity']
category_sort_keys[True]['rating'] = category_sort_keys[False]['rating'] = \
lambda x:(-getattr(x, 'avg_rating', 0.0), sort_key(x.sort or x.name))
category_sort_keys[True]['name'] = \
lambda x:(first_digit(x), collation_order(icu_upper(x.sort or x.name or ' ')), sort_key(x.sort or x.name))
sort_key_for_name_and_first_letter
category_sort_keys[False]['name'] = \
lambda x:sort_key(x.sort or x.name)