mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Dont use pickle to calculate etags for tag browser data dumps
This commit is contained in:
parent
c98cc3383d
commit
69210a7783
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||||
|
|
||||||
import cPickle
|
|
||||||
import hashlib
|
import hashlib
|
||||||
import random
|
import random
|
||||||
import shutil
|
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.icu import sort_key, numeric_sort_key
|
||||||
from calibre.utils.localization import get_lang, lang_map_for_ui, localize_website_link
|
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.search_query_parser import ParseException
|
||||||
|
from calibre.utils.serialize import json_dumps
|
||||||
|
|
||||||
POSTABLE = frozenset({'GET', 'POST', 'HEAD'})
|
POSTABLE = frozenset({'GET', 'POST', 'HEAD'})
|
||||||
|
|
||||||
@ -382,9 +382,9 @@ def tag_browser(ctx, rd):
|
|||||||
&collapse_at=25&dont_collapse=&hide_empty_categories=&vl=''
|
&collapse_at=25&dont_collapse=&hide_empty_categories=&vl=''
|
||||||
'''
|
'''
|
||||||
db, library_id = get_library_data(ctx, rd)[:2]
|
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 ''
|
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()
|
etag = hashlib.sha1(etag).hexdigest()
|
||||||
|
|
||||||
def generate():
|
def generate():
|
||||||
|
@ -192,7 +192,7 @@ def icon_map():
|
|||||||
return _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(','))
|
dont_collapse = frozenset(query.get('dont_collapse', '').split(','))
|
||||||
partition_method = query.get('partition_method', 'first letter')
|
partition_method = query.get('partition_method', 'first letter')
|
||||||
if partition_method not in {'first letter', 'disable', 'partition'}:
|
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()))
|
hidden_categories = frozenset(db.pref('tag_browser_hidden_categories', set()))
|
||||||
return CategoriesSettings(
|
return CategoriesSettings(
|
||||||
dont_collapse, collapse_model, collapse_at, sort_by, template,
|
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')
|
hidden_categories, query.get('hide_empty_categories') == 'yes')
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user