diff --git a/addons/web_editor/models/ir_ui_view.py b/addons/web_editor/models/ir_ui_view.py index c50922bdce3..48a94e4b8cb 100644 --- a/addons/web_editor/models/ir_ui_view.py +++ b/addons/web_editor/models/ir_ui_view.py @@ -6,7 +6,7 @@ import logging from lxml import etree, html from odoo.exceptions import AccessError -from odoo import api, models +from odoo import api, fields, models _logger = logging.getLogger(__name__) @@ -33,6 +33,10 @@ class IrUiView(models.Model): def extract_embedded_fields(self, arch): return arch.xpath('//*[@data-oe-model != "ir.ui.view"]') + @api.model + def get_default_lang_code(self): + return False + @api.model def save_embedded_field(self, el): Model = self.env[el.get('data-oe-model')] @@ -44,7 +48,10 @@ class IrUiView(models.Model): if value is not None: # TODO: batch writes? - Model.browse(int(el.get('data-oe-id'))).write({field: value}) + if self.get_default_lang_code() and field != 'arch' and not isinstance(Model._fields[field], fields.Html): + Model.browse(int(el.get('data-oe-id'))).with_context(lang=self.get_default_lang_code()).write({field: value}) + else: + Model.browse(int(el.get('data-oe-id'))).write({field: value}) def _pretty_arch(self, arch): # remove_blank_string does not seem to work on HTMLParser, and diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 110ce7e39ee..3237b1f9c5b 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -146,3 +146,12 @@ class View(models.Model): if full: return views return views.filtered(lambda v: v.customize_show) + + @api.model + def get_default_lang_code(self): + website_id = self.env.context.get('website_id') + if website_id: + lang_code = self.env['website'].browse(website_id).default_lang_code + return lang_code + else: + return super(View, self).get_default_lang_code()