mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Refactor code to get list of sortable fields
This commit is contained in:
parent
e4f2d70a9d
commit
2624b41932
@ -53,18 +53,10 @@ class SortByAction(InterfaceAction):
|
||||
except TypeError:
|
||||
sort_col, order = 'date', True
|
||||
fm = db.field_metadata
|
||||
def get_name(k):
|
||||
ans = fm[k]['name']
|
||||
if k == 'cover':
|
||||
ans = _('Has cover')
|
||||
return ans
|
||||
|
||||
name_map = {get_name(k):k for k in fm.sortable_field_keys() if fm[k]['name']}
|
||||
name_map = {v:k for k, v in fm.ui_sortable_field_keys().iteritems()}
|
||||
self._sactions = []
|
||||
for name in sorted(name_map, key=sort_key):
|
||||
key = name_map[name]
|
||||
if key in {'sort', 'series_sort', 'formats', 'path'}:
|
||||
continue
|
||||
if key == 'ondevice' and self.gui.device_connected is None:
|
||||
continue
|
||||
ascending = None
|
||||
|
@ -448,6 +448,15 @@ class FieldMetadata(dict):
|
||||
if self._tb_cats[k]['kind']=='field' and
|
||||
self._tb_cats[k]['datatype'] is not None]
|
||||
|
||||
def ui_sortable_field_keys(self):
|
||||
ans = {k:self._tb_cats[k]['name'] for k in set(self.sortable_field_keys()) - {
|
||||
'sort', 'author_sort', 'au_map', 'series_sort', 'marked',
|
||||
'series_index', 'path', 'formats', 'identifiers', 'uuid',
|
||||
'comments',
|
||||
} if self._tb_cats[k]['name']}
|
||||
ans['cover'] = _('Has cover')
|
||||
return ans
|
||||
|
||||
def displayable_field_keys(self):
|
||||
return [k for k in self._tb_cats.keys()
|
||||
if self._tb_cats[k]['kind']=='field' and
|
||||
|
@ -107,6 +107,8 @@ def interface_data(ctx, rd):
|
||||
raise HTTPNotFound('Invalid number of books: %r' % rd.query.get('num'))
|
||||
with db.safe_read_lock:
|
||||
ans['search_result'] = search_result(ctx, rd, db, '', num, 0, ','.join(sorts), ','.join(orders))
|
||||
ans['sortable_fields'] = sf = db.field_metadata.ui_sortable_field_keys()
|
||||
sf.pop('ondevice', None)
|
||||
ans['field_metadata'] = db.field_metadata.all_metadata()
|
||||
# ans['categories'] = ctx.get_categories(rd, db)
|
||||
mdata = ans['metadata'] = {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user