diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index 37f024c08d..485601a311 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -373,13 +373,18 @@ class BrowseServer(object): script='toplevel();', main=main) def browse_sort_categories(self, items, sort): - if sort not in ('rating', 'name', 'popularity'): - sort = 'name' - items.sort(key=lambda x: sort_key(getattr(x, 'sort', x.name))) + def keyg(x): + x = getattr(x, 'sort', x.name) + if isinstance(x, unicode): + return sort_key(x) + return x + if sort == 'popularity': items.sort(key=operator.attrgetter('count'), reverse=True) elif sort == 'rating': items.sort(key=operator.attrgetter('avg_rating'), reverse=True) + else: + items.sort(key=keyg) return sort def browse_category(self, category, sort):