diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index e29554c2a6..87c55275d7 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -7,7 +7,6 @@ __docformat__ = 'restructuredtext en' import operator, os, json, re from binascii import hexlify, unhexlify -from urllib import quote, unquote import cherrypy @@ -21,6 +20,7 @@ from calibre.utils.magick import Image from calibre.library.comments import comments_to_html from calibre.library.server import custom_fields_to_display from calibre.library.field_metadata import category_icon_map +from calibre.library.server.utils import quote, unquote def render_book_list(ids, prefix, suffix=''): # {{{ pages = [] diff --git a/src/calibre/library/server/utils.py b/src/calibre/library/server/utils.py index 35c92f7ae2..1407487db3 100644 --- a/src/calibre/library/server/utils.py +++ b/src/calibre/library/server/utils.py @@ -6,10 +6,11 @@ __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' import time, sys +from urllib import quote as quote_, unquote as unquote_ import cherrypy -from calibre import strftime as _strftime, prints +from calibre import strftime as _strftime, prints, isbytestring from calibre.utils.date import now as nowf from calibre.utils.config import tweaks @@ -81,3 +82,14 @@ def format_tag_string(tags, sep, ignore_max=False, no_tag_count=False): return u'%s:&:%s'%(tweaks['max_content_server_tags_shown'], ', '.join(tlist)) if tlist else '' +def quote(s): + if isinstance(s, unicode): + s = s.encode('utf-8') + return quote_(s) + +def unquote(s): + ans = unquote_(s) + if isbytestring(ans): + ans = ans.decode('utf-8') + return ans +