summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-04-23 14:07:12 +0200
committerChristophe Simonis <chs@odoo.com>2018-04-23 14:07:12 +0200
commit2d12ae3202ed93a12e1f8ff59bf64e82c0c98871 (patch)
treecbcbd8258076f6cda4696852a9b93ee389d50aa1
parent6157750a662a4b81e6e094a161f5b12e6ceb080a (diff)
parentc9e7433c23712f41fa2a93f3ee6464eb94173608 (diff)
[MERGE] forward port branch 9.0 up to c9e7433c237
-rw-r--r--addons/web/controllers/main.py14
-rw-r--r--addons/web_editor/static/src/js/rte.summernote.js10
-rw-r--r--odoo/addons/base/ir/ir_ui_view.py2
3 files changed, 21 insertions, 5 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 6122b00e0ed..5408b9f159e 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -24,6 +24,7 @@ import werkzeug.wrappers
import zlib
from xml.etree import ElementTree
from cStringIO import StringIO
+import unicodedata
import odoo
@@ -1066,16 +1067,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 = 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)
})
args = {
- 'filename': ufile.filename,
+ 'filename': filename,
'mimetype': ufile.content_type,
'id': attachment.id
}
diff --git a/addons/web_editor/static/src/js/rte.summernote.js b/addons/web_editor/static/src/js/rte.summernote.js
index b8f3198dae2..2f60b1333d4 100644
--- a/addons/web_editor/static/src/js/rte.summernote.js
+++ b/addons/web_editor/static/src/js/rte.summernote.js
@@ -666,7 +666,15 @@ function summernote_mousedown (event) {
}
// restore range if range lost after clicking on non-editable area
- r = range.create();
+ try {
+ r = range.create();
+ } catch (e) {
+ // If this code is running inside an iframe-editor and that the range
+ // is outside of this iframe, this will fail as the iframe does not have
+ // the permission to check the outside content this way. In that case,
+ // we simply ignore the exception as it is as if there was no range.
+ return;
+ }
var editables = $(".o_editable[contenteditable], .note-editable[contenteditable]");
var r_editable = editables.has((r||{}).sc);
if (!r_editable.closest('.note-editor').is($editable) && !r_editable.filter('.o_editable').is(editables)) {
diff --git a/odoo/addons/base/ir/ir_ui_view.py b/odoo/addons/base/ir/ir_ui_view.py
index e061417fa0e..4bcba4cb151 100644
--- a/odoo/addons/base/ir/ir_ui_view.py
+++ b/odoo/addons/base/ir/ir_ui_view.py
@@ -1152,7 +1152,7 @@ actual arch.
query = """SELECT max(v.id)
FROM ir_ui_view v
LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id)
- WHERE md.module NOT IN (SELECT name FROM ir_module_module)
+ WHERE md.module IN (SELECT name FROM ir_module_module) IS NOT TRUE
AND v.model = %s
AND v.active = true
GROUP BY coalesce(v.inherit_id, v.id)"""