diff --git a/src/calibre/srv/code.py b/src/calibre/srv/code.py index cc61d72e6e..806577d525 100644 --- a/src/calibre/srv/code.py +++ b/src/calibre/srv/code.py @@ -4,7 +4,6 @@ from __future__ import absolute_import, division, print_function, unicode_literals -import cPickle import hashlib import random import shutil @@ -29,6 +28,7 @@ from calibre.utils.config import prefs, tweaks from calibre.utils.icu import sort_key, numeric_sort_key from calibre.utils.localization import get_lang, lang_map_for_ui, localize_website_link from calibre.utils.search_query_parser import ParseException +from calibre.utils.serialize import json_dumps POSTABLE = frozenset({'GET', 'POST', 'HEAD'}) @@ -382,9 +382,9 @@ def tag_browser(ctx, rd): &collapse_at=25&dont_collapse=&hide_empty_categories=&vl='' ''' db, library_id = get_library_data(ctx, rd)[:2] - opts = categories_settings(rd.query, db) + opts = categories_settings(rd.query, db, gst_container=tuple) vl = rd.query.get('vl') or '' - etag = cPickle.dumps([db.last_modified().isoformat(), rd.username, library_id, vl, list(opts)], -1) + etag = json_dumps([db.last_modified().isoformat(), rd.username, library_id, vl, list(opts)]) etag = hashlib.sha1(etag).hexdigest() def generate(): diff --git a/src/calibre/srv/metadata.py b/src/calibre/srv/metadata.py index 9db376d257..ec2d768a9f 100644 --- a/src/calibre/srv/metadata.py +++ b/src/calibre/srv/metadata.py @@ -192,7 +192,7 @@ def icon_map(): return _icon_map -def categories_settings(query, db): +def categories_settings(query, db, gst_container=GroupedSearchTerms): dont_collapse = frozenset(query.get('dont_collapse', '').split(',')) partition_method = query.get('partition_method', 'first letter') if partition_method not in {'first letter', 'disable', 'partition'}: @@ -214,7 +214,7 @@ def categories_settings(query, db): hidden_categories = frozenset(db.pref('tag_browser_hidden_categories', set())) return CategoriesSettings( dont_collapse, collapse_model, collapse_at, sort_by, template, - using_hierarchy, GroupedSearchTerms(db.pref('grouped_search_terms', {})), + using_hierarchy, gst_container(db.pref('grouped_search_terms', {})), hidden_categories, query.get('hide_empty_categories') == 'yes')