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>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import os, traceback, random, shutil, re
|
||||
import os, traceback, random, shutil, re, operator
|
||||
from io import BytesIO
|
||||
from collections import defaultdict
|
||||
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.search import Search
|
||||
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.ebooks import check_ebook_format
|
||||
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 func
|
||||
|
||||
# Sort only once on any given field
|
||||
fields = uniq(fields, operator.itemgetter(0))
|
||||
|
||||
if len(fields) == 1:
|
||||
return sorted(ids_to_sort, key=sort_key_func(fields[0][0]),
|
||||
reverse=not fields[0][1])
|
||||
|
Loading…
x
Reference in New Issue
Block a user