mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
newdb: Fix sorting of view not stable
This commit is contained in:
parent
99d9db82f7
commit
f731f2803b
@ -792,6 +792,7 @@ class Cache(object):
|
||||
'''
|
||||
all_book_ids = frozenset(self._all_book_ids() if ids_to_sort is None
|
||||
else ids_to_sort)
|
||||
ids_to_sort = all_book_ids if ids_to_sort is None else ids_to_sort
|
||||
get_metadata = self._get_proxy_metadata
|
||||
lang_map = self.fields['languages'].book_value_map
|
||||
virtual_fields = virtual_fields or {}
|
||||
@ -818,10 +819,10 @@ class Cache(object):
|
||||
|
||||
if len(sort_keys) == 1:
|
||||
sk = sort_keys[0]
|
||||
return sorted(all_book_ids, key=lambda i:sk[i], reverse=not
|
||||
return sorted(ids_to_sort, key=lambda i:sk[i], reverse=not
|
||||
fields[0][1])
|
||||
else:
|
||||
return sorted(all_book_ids, key=partial(SortKey, fields, sort_keys))
|
||||
return sorted(ids_to_sort, key=partial(SortKey, fields, sort_keys))
|
||||
|
||||
@read_api
|
||||
def search(self, query, restriction='', virtual_fields=None, book_ids=None):
|
||||
|
@ -222,7 +222,9 @@ class View(object):
|
||||
if not fields:
|
||||
fields = [('timestamp', False)]
|
||||
|
||||
sorted_book_ids = self.cache.multisort(fields, ids_to_sort=only_ids, virtual_fields={'marked':MarkedVirtualField(self.marked_ids)})
|
||||
sorted_book_ids = self.cache.multisort(
|
||||
fields, ids_to_sort=self._map if only_ids is None else only_ids,
|
||||
virtual_fields={'marked':MarkedVirtualField(self.marked_ids)})
|
||||
if only_ids is None:
|
||||
self._map = tuple(sorted_book_ids)
|
||||
if len(self._map_filtered) == len(self._map):
|
||||
|
Loading…
x
Reference in New Issue
Block a user