From 7dc8e70b711e5bf2a1fdbbdbe522b88ac31c2b9d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 19 Oct 2010 14:33:19 -0600 Subject: [PATCH] /browse: Fix sorting on custom cols. Also specify sort order explicitly when sorting on boolean columns --- src/calibre/library/caches.py | 4 ++++ src/calibre/library/server/browse.py | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index c22f9e00b0..300ddbac0b 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -816,6 +816,10 @@ class SortKeyGenerator(object): if val is None: val = '' val = val.lower() + + elif dt == 'bool': + val = {True: 1, False: 2, None: 3}.get(val, 3) + yield val # }}} diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index ea86de4c1b..d8d67c3824 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en' import operator, os, json from binascii import hexlify, unhexlify -from urllib import quote +from urllib import quote, unquote import cherrypy @@ -482,6 +482,8 @@ class BrowseServer(object): @Endpoint(sort_type='list') def browse_matches(self, category=None, cid=None, list_sort=None): + if list_sort: + list_sort = unquote(list_sort) if not cid: raise cherrypy.HTTPError(404, 'invalid category id: %r'%cid) categories = self.categories_cache()