[FIX] web: NFD UTF-8 for safari in upload file

Before this commit, when uploading a file as attachment in Safari,
The file icon kept on showing 'downloading' whereas the request was successful

This was because the return from the server had a different UTF-8 norm than Safari

After this commit, it works well

OPW 1836545
closes #24307
This commit is contained in:
Lucas Perais (lpe)
2018-04-23 09:00:11 +02:00
parent b61aad2f6b
commit cd6150fe9e
+11 -3
View File
@@ -19,6 +19,7 @@ import time
import zlib
from xml.etree import ElementTree
from cStringIO import StringIO
import unicodedata
import babel.messages.pofile
import werkzeug.utils
@@ -1069,16 +1070,23 @@ class Binary(http.Controller):
var win = window.top.window;
win.jQuery(win).trigger(%s, %s);
</script>"""
filename = ufile.filename
if request.httprequest.user_agent.browser == 'safari':
# Safari sends NFD UTF-8 (where é is composed by 'e' and [accent])
# we need to send it the same stuff, otherwise it'll fail
filename = unicodedata.normalize('NFD', ufile.filename).encode('UTF-8')
try:
attachment_id = Model.create({
'name': ufile.filename,
'name': filename,
'datas': base64.encodestring(ufile.read()),
'datas_fname': ufile.filename,
'datas_fname': filename,
'res_model': model,
'res_id': int(id)
}, request.context)
args = {
'filename': ufile.filename,
'filename': filename,
'mimetype': ufile.content_type,
'id': attachment_id
}