summaryrefslogtreecommitdiff
path: root/addons/web_editor
diff options
context:
space:
mode:
authorRomain Derie <rde@odoo.com>2018-01-20 21:17:25 +0100
committerRomain Derie <rde@odoo.com>2018-02-07 13:35:03 +0100
commitb2b71efb365b08677fb6fa0cd83f4adec28c8da8 (patch)
treeacd2b7b832030489b566ffb1b34dcf2b7fc5dc74 /addons/web_editor
parent80f88ad63b81c1f56aa22251abbfdbbd7d4ebe63 (diff)
[BACKPORT] website: translation if website default lang is not en_US
Before this commit: When website default lang was not en_US, the translation of fields* in the web_editor would not be saved correctly. Let's illustrate with fr_BE set as main lang: The web_editor's RPC calls does not send language in the context when editing a page (6ebcc06), but it does in translation mode. Note that editing is always performed in the website main lang, fr_BE in this case. Therefore: 1. When EDITING: The backend suppose the language is en_US as there is no lang in the context (hardcoded everywhere). It then write in the record itself instead of the ir.translation as it should since fr_BE is a translation. (In Odoo, every lang is a translation, en_US is always the main lang) 2. When TRANSLATING (in en_US): It would also write on model as the web_editor send the language to the backend when in translate mode. But since en_US is recognized as the main lang (which is correct), it also writes in the model, overriding the incorrect fr_BE writing which was also wrote on the model. This has been fixed in 10.0 with these 2 commits: 036ccbe 2955bf2 With these fixes, the lang is correctly added (by the backend) if the website module is installed. By ensuring the lang is correctly set, the ORM _write() function will process the edition and translation datas as it should: - If it receive en_US, it will write on the model - If it receive another lang, it will write on ir.translation This closes #10883, closes #22403 *Not the HTML/XML fields which are handled differently by the ORM/translation
Diffstat (limited to 'addons/web_editor')
-rw-r--r--addons/web_editor/models/ir_ui_view.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/addons/web_editor/models/ir_ui_view.py b/addons/web_editor/models/ir_ui_view.py
index dd7501c44f9..0f326f2e19a 100644
--- a/addons/web_editor/models/ir_ui_view.py
+++ b/addons/web_editor/models/ir_ui_view.py
@@ -35,12 +35,18 @@ class view(osv.osv):
def extract_embedded_fields(self, cr, uid, arch, context=None):
return arch.xpath('//*[@data-oe-model != "ir.ui.view"]')
+
+ def get_default_lang_code(self, cr, uid, context=None):
+ return False
+
def save_embedded_field(self, cr, uid, el, context=None):
Model = self.pool[el.get('data-oe-model')]
field = el.get('data-oe-field')
converter = self.pool['ir.qweb'].get_converter_for(el.get('data-oe-type'))
value = converter.from_html(cr, uid, Model, Model._fields[field], el)
+ if context and not context.get('lang'):
+ context['lang'] = self.get_default_lang_code(cr, uid, context=context)
if value is not None:
# TODO: batch writes?