mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 18:24:30 -04:00
multisort: Sort only once on any given field
This commit is contained in:
parent
c16d95877e
commit
c10d73e5c6
@ -7,7 +7,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import os, traceback, random, shutil, re
|
import os, traceback, random, shutil, re, operator
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
@ -23,7 +23,7 @@ from calibre.db.errors import NoSuchFormat
|
|||||||
from calibre.db.fields import create_field, IDENTITY
|
from calibre.db.fields import create_field, IDENTITY
|
||||||
from calibre.db.search import Search
|
from calibre.db.search import Search
|
||||||
from calibre.db.tables import VirtualTable
|
from calibre.db.tables import VirtualTable
|
||||||
from calibre.db.write import get_series_values
|
from calibre.db.write import get_series_values, uniq
|
||||||
from calibre.db.lazy import FormatMetadata, FormatsList, ProxyMetadata
|
from calibre.db.lazy import FormatMetadata, FormatsList, ProxyMetadata
|
||||||
from calibre.ebooks import check_ebook_format
|
from calibre.ebooks import check_ebook_format
|
||||||
from calibre.ebooks.metadata import string_to_authors, author_to_author_sort, get_title_sort_pat
|
from calibre.ebooks.metadata import string_to_authors, author_to_author_sort, get_title_sort_pat
|
||||||
@ -830,6 +830,9 @@ class Cache(object):
|
|||||||
return skf
|
return skf
|
||||||
return func
|
return func
|
||||||
|
|
||||||
|
# Sort only once on any given field
|
||||||
|
fields = uniq(fields, operator.itemgetter(0))
|
||||||
|
|
||||||
if len(fields) == 1:
|
if len(fields) == 1:
|
||||||
return sorted(ids_to_sort, key=sort_key_func(fields[0][0]),
|
return sorted(ids_to_sort, key=sort_key_func(fields[0][0]),
|
||||||
reverse=not fields[0][1])
|
reverse=not fields[0][1])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user