diff options
| author | Goffin Simon <sig@odoo.com> | 2015-05-13 11:20:41 +0200 |
|---|---|---|
| committer | Martin Trigaux <mat@odoo.com> | 2015-05-13 16:56:12 +0200 |
| commit | c435b8438eb17dfc1b3807974b4e906a54ffed0e (patch) | |
| tree | c5fe2955cf1b5e26f2625452803ea631b4238d52 /addons/web/controllers/main.py | |
| parent | acd61f8f0efe0c1da2a0640ec65bfc48d6714645 (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.py | 8 |
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 |
