summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
authorGoffin Simon <sig@odoo.com>2015-05-13 11:20:41 +0200
committerMartin Trigaux <mat@odoo.com>2015-05-13 16:56:12 +0200
commitc435b8438eb17dfc1b3807974b4e906a54ffed0e (patch)
treec5fe2955cf1b5e26f2625452803ea631b4238d52 /addons/web/controllers/main.py
parentacd61f8f0efe0c1da2a0640ec65bfc48d6714645 (diff)
[FIX] web: With safari, UnicodeDecodeError
The headers returned by content_disposition must be either in Unicode or in ASCII. The encode function expects a Unicode or ASCII string. The quote function from urllib2 expects a UTF-8 string and retruns a ASCII string. opw:634205 Fixes #6160, #6557
Diffstat (limited to 'addons/web/controllers/main.py')
-rw-r--r--addons/web/controllers/main.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 7d3862c3091..5270cad731d 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -32,7 +32,7 @@ except ImportError:
import openerp
import openerp.modules.registry
from openerp.tools.translate import _
-from openerp.tools import config
+from openerp.tools import config, ustr
from .. import http
openerpweb = http
@@ -520,14 +520,14 @@ def xml2json_from_elementtree(el, preserve_whitespaces=False):
return res
def content_disposition(filename, req):
- filename = filename.encode('utf8')
- escaped = urllib2.quote(filename)
+ filename = ustr(filename)
+ escaped = urllib2.quote(filename.encode('utf8'))
browser = req.httprequest.user_agent.browser
version = int((req.httprequest.user_agent.version or '0').split('.')[0])
if browser == 'msie' and version < 9:
return "attachment; filename=%s" % escaped
elif browser == 'safari':
- return "attachment; filename=\"%s\"" % filename
+ return u"attachment; filename=%s" % filename
else:
return "attachment; filename*=UTF-8''%s" % escaped