From 16266c6e700513fd60abafc88de205951cbea90e Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 19 Sep 2010 20:11:39 +0100 Subject: [PATCH] Change field_keys to sortable_keys --- src/calibre/library/caches.py | 2 +- src/calibre/library/field_metadata.py | 6 ++++-- src/calibre/library/server/content.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 073f98583c..770a362a1d 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -621,7 +621,7 @@ class ResultCache(SearchQueryParser): def multisort(self, fields=[], subsort=False): fields = [(self.sanitize_sort_field_name(x), bool(y)) for x, y in fields] - keys = self.field_metadata.field_keys() + keys = self.field_metadata.sortable_keys() fields = [x for x in fields if x[0] in keys] if subsort and 'sort' not in [x[0] for x in fields]: fields += [('sort', True)] diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index 971d91b248..e4a4f5270d 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -348,8 +348,10 @@ class FieldMetadata(dict): def keys(self): return self._tb_cats.keys() - def field_keys(self): - return [k for k in self._tb_cats.keys() if self._tb_cats[k]['kind']=='field'] + def sortable_keys(self): + return [k for k in self._tb_cats.keys() + if self._tb_cats[k]['kind']=='field' and + self._tb_cats[k]['datatype'] is not None] def iterkeys(self): for key in self._tb_cats: diff --git a/src/calibre/library/server/content.py b/src/calibre/library/server/content.py index 95794a8c1d..acfc1f9ab1 100644 --- a/src/calibre/library/server/content.py +++ b/src/calibre/library/server/content.py @@ -56,7 +56,7 @@ class ContentServer(object): def sort(self, items, field, order): field = self.db.data.sanitize_sort_field_name(field) - if field not in self.db.field_metadata.field_keys(): + if field not in self.db.field_metadata.sortable_keys(): raise cherrypy.HTTPError(400, '%s is not a valid sort field'%field) keyg = CSSortKeyGenerator([(field, order)], self.db.field_metadata) items.sort(key=keyg, reverse=not order)