mirror of
git://github.com/kovidgoyal/calibre.git
synced 2026-05-06 00:53:43 +02:00
When listing series, sort ignoring leading English prepositions. Fixes #5090 (Series Sort)
This commit is contained in:
parent
7a737aa3a1
commit
c2f655ad71
3 changed files with 8 additions and 4 deletions
|
|
@ -17,7 +17,7 @@
|
|||
from calibre.utils.date import parse_date, now, UNDEFINED_DATE
|
||||
from calibre.utils.search_query_parser import SearchQueryParser
|
||||
from calibre.utils.pyparsing import ParseException
|
||||
# from calibre.library.field_metadata import FieldMetadata
|
||||
from calibre.ebooks.metadata import title_sort
|
||||
|
||||
class CoverCache(QThread):
|
||||
|
||||
|
|
@ -564,7 +564,8 @@ def refresh(self, db, field=None, ascending=True):
|
|||
def seriescmp(self, x, y):
|
||||
sidx = self.FIELD_MAP['series']
|
||||
try:
|
||||
ans = cmp(self._data[x][sidx].lower(), self._data[y][sidx].lower())
|
||||
ans = cmp(title_sort(self._data[x][sidx].lower()),
|
||||
title_sort(self._data[y][sidx].lower()))
|
||||
except AttributeError: # Some entries may be None
|
||||
ans = cmp(self._data[x][sidx], self._data[y][sidx])
|
||||
if ans != 0: return ans
|
||||
|
|
|
|||
|
|
@ -725,6 +725,9 @@ def get_categories(self, sort_on_count=False, ids=None, icon_map=None):
|
|||
categories[category] = [Tag(formatter(r[1]), count=r[2], id=r[0],
|
||||
icon=icon, tooltip = tooltip)
|
||||
for r in data if item_not_zero_func(r)]
|
||||
if category == 'series':
|
||||
categories[category].sort(cmp=lambda x,y:cmp(title_sort(x.name),
|
||||
title_sort(y.name)))
|
||||
|
||||
# We delayed computing the standard formats category because it does not
|
||||
# use a view, but is computed dynamically
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
from calibre import fit_image, guess_type
|
||||
from calibre.utils.date import fromtimestamp
|
||||
|
||||
from calibre.ebooks.metadata import title_sort
|
||||
|
||||
class ContentServer(object):
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ def sort(self, items, field, order):
|
|||
def seriescmp(self, x, y):
|
||||
si = self.db.FIELD_MAP['series']
|
||||
try:
|
||||
ans = cmp(x[si].lower(), y[si].lower())
|
||||
ans = cmp(title_sort(x[si].lower()), title_sort(y[si].lower()))
|
||||
except AttributeError: # Some entries may be None
|
||||
ans = cmp(x[si], y[si])
|
||||
if ans != 0: return ans
|
||||
|
|
|
|||
Loading…
Reference in a new issue