diff --git a/src/calibre/ebooks/metadata/__init__.py b/src/calibre/ebooks/metadata/__init__.py index 01e5190640..25127ee591 100644 --- a/src/calibre/ebooks/metadata/__init__.py +++ b/src/calibre/ebooks/metadata/__init__.py @@ -57,6 +57,8 @@ _ignore_starts = u'\'"'+u''.join(unichr(x) for x in range(0x2018, 0x201e)+[0x203 def title_sort(title): title = title.strip() + if tweaks['title_series_sorting'] == 'strictly_alphabetic': + return title if title and title[0] in _ignore_starts: title = title[1:] match = _title_pat.search(title) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 2848e8ebb3..cba49ae6ae 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1128,6 +1128,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): for l in list: (id, val, sort_val) = (l[0], l[1], l[2]) tids[category][val] = (id, sort_val) + elif cat['datatype'] == 'series': + for l in list: + (id, val) = (l[0], l[1]) + tids[category][val] = (id, title_sort(val)) elif cat['datatype'] == 'rating': for l in list: (id, val) = (l[0], l[1]) diff --git a/src/calibre/library/sqlite.py b/src/calibre/library/sqlite.py index ca6b0fc178..521c275efe 100644 --- a/src/calibre/library/sqlite.py +++ b/src/calibre/library/sqlite.py @@ -161,10 +161,7 @@ class DBThread(Thread): self.conn.create_aggregate('sort_concat', 2, SafeSortedConcatenate) self.conn.create_collation('PYNOCASE', partial(pynocase, encoding=encoding)) - if tweaks['title_series_sorting'] == 'strictly_alphabetic': - self.conn.create_function('title_sort', 1, lambda x:x) - else: - self.conn.create_function('title_sort', 1, title_sort) + self.conn.create_function('title_sort', 1, title_sort) self.conn.create_function('author_to_author_sort', 1, _author_to_author_sort) self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4()))