Dont fail if sorting throws an exception, instead just fallback to sorting by id

This commit is contained in:
Kovid Goyal 2020-10-21 09:09:27 +05:30
parent 6b331c1f91
commit 8b3b008c3c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -6,7 +6,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, operator import os, traceback, random, shutil, operator, sys
from io import BytesIO from io import BytesIO
from collections import defaultdict, Set, MutableSet from collections import defaultdict, Set, MutableSet
from functools import wraps, partial from functools import wraps, partial
@ -975,8 +975,12 @@ class Cache(object):
fields = uniq(fields, operator.itemgetter(0)) fields = uniq(fields, operator.itemgetter(0))
if len(fields) == 1: if len(fields) == 1:
try:
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])
except Exception as err:
print('Failed to sort database on field:', fields[0][0], 'with error:', err, file=sys.stderr)
return sorted(ids_to_sort, reverse=not fields[0][1])
sort_key_funcs = tuple(sort_key_func(field) for field, order in fields) sort_key_funcs = tuple(sort_key_func(field) for field, order in fields)
orders = tuple(1 if order else -1 for _, order in fields) orders = tuple(1 if order else -1 for _, order in fields)
Lazy = object() # Lazy load the sort keys for sub-sort fields Lazy = object() # Lazy load the sort keys for sub-sort fields