diff --git a/addons/mail/models/mail_composer_mixin.py b/addons/mail/models/mail_composer_mixin.py index a17b5941199..797a6ad3946 100644 --- a/addons/mail/models/mail_composer_mixin.py +++ b/addons/mail/models/mail_composer_mixin.py @@ -26,6 +26,8 @@ class MailComposerMixin(models.AbstractModel): 'Contents', compute='_compute_body', readonly=False, store=True, render_engine='qweb', render_options={'post_process': True}, sanitize=False) template_id = fields.Many2one('mail.template', 'Mail Template', domain="[('model', '=', render_model)]") + # Language: override mail.render.mixin field, copy template value + lang = fields.Char(compute='_compute_lang', precompute=True, readonly=False, store=True) # Access is_mail_template_editor = fields.Boolean('Is Editor', compute='_compute_is_mail_template_editor') can_edit_body = fields.Boolean('Can Edit Body', compute='_compute_can_edit_body') @@ -46,6 +48,16 @@ class MailComposerMixin(models.AbstractModel): elif not composer_mixin.body: composer_mixin.body = False + @api.depends('template_id') + def _compute_lang(self): + for composer_mixin in self: + """ Take value form template when set. When removing the template + reset the value to avoid keeping part of template configuration. """ + if composer_mixin.template_id.lang: + composer_mixin.lang = composer_mixin.template_id.lang + elif not composer_mixin.template_id: + composer_mixin.lang = False + @api.depends_context('uid') def _compute_is_mail_template_editor(self): is_mail_template_editor = self.env.is_admin() or self.env.user.has_group('mail.group_mail_template_editor') diff --git a/addons/test_mail/tests/test_mail_composer_mixin.py b/addons/test_mail/tests/test_mail_composer_mixin.py index 9591646b4a0..4dd79b17f30 100644 --- a/addons/test_mail/tests/test_mail_composer_mixin.py +++ b/addons/test_mail/tests/test_mail_composer_mixin.py @@ -47,8 +47,8 @@ class TestMailComposerMixin(TestMailCommon, TestRecipients): 'source_ids': [(4, source.id)], }) self.assertEqual(composer.body, self.mail_template.body_html) + self.assertEqual(composer.lang, self.mail_template.lang) self.assertEqual(composer.subject, self.mail_template.subject) - self.assertFalse(composer.lang, 'Fixme: lang is not propagated currently') subject = composer._render_field('subject', source.ids)[source.id] self.assertEqual(subject, f'EnglishSubject for {source.name}') @@ -84,7 +84,6 @@ class TestMailComposerMixin(TestMailCommon, TestRecipients): source = self.test_record.with_env(self.env) composer = self.env['mail.test.composer.mixin'].create({ 'description': '
Description for