summaryrefslogtreecommitdiff
path: root/addons/test_mail
diff options
context:
space:
mode:
authornie <nie@odoo.com>2021-04-01 15:12:09 +0000
committernie <nie@odoo.com>2021-05-27 14:25:28 +0000
commit74da8e27c7e16fa92eb1547cec1a7ce82e15e0c6 (patch)
tree2eb9c0584072735aa4dc10d80a7646cb6ac2e913 /addons/test_mail
parentfb556ed09c7ed00afbed33b6029b1315a113575a (diff)
[FIX] mail: use template lang on layout and display name
Steps: - Install sale - Go to Settings / Translations / Languages - Activate Dutch - Go to Settings / Users & Companies / Users - Edit demo - Language: Dutch - Go to Sales - Create a quotation: - Customer: demo - Go to Settings / Technical / Automation / Scheduled Actions - Create a new action: - Model: Sales Order - Python code: ```python last_id = model.search([], order='id desc', limit=1)[0].id env.ref('sale.email_template_edi_sale').send_mail(last_id, notif_layout='mail.mail_notification_paynow') ``` - Click "Run Manually" - Go to Settings / Technical / Email / Emails - Open the last email you just sent Bug: Parts of the email are not in Dutch Explanation: This commit makes a template pass the rendering language to the layout and the display name when calling `template.send_mail()`. opw:2467640 closes odoo/odoo#68656 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons/test_mail')
-rw-r--r--addons/test_mail/tests/test_mail_template.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/addons/test_mail/tests/test_mail_template.py b/addons/test_mail/tests/test_mail_template.py
index a845ffc0a79..5bf72f3da7c 100644
--- a/addons/test_mail/tests/test_mail_template.py
+++ b/addons/test_mail/tests/test_mail_template.py
@@ -54,6 +54,69 @@ class TestMailTemplate(TestMailCommon, TestRecipients):
self.assertEqual(mail.email_cc, self.email_template.email_cc)
self.assertEqual(mail.recipient_ids, self.partner_2 | self.user_admin.partner_id)
+ @mute_logger('odoo.addons.mail.models.mail_mail')
+ def test_template_translation(self):
+ self.env['res.lang']._activate_lang('es_ES')
+ self.env.ref('base.module_base')._update_translations(['es_ES'])
+
+ partner = self.env['res.partner'].create({'name': "test", 'lang': 'es_ES'})
+ email_template = self.env['mail.template'].create({
+ 'name': 'TestTemplate',
+ 'subject': 'English Subject',
+ 'body_html': '<p>English Body</p>',
+ 'model_id': self.env['ir.model']._get(partner._name).id,
+ 'lang': '${object.lang}'
+ })
+ # Make sure Spanish translations have not been altered
+ description_translations = self.env['ir.translation'].search([('module', '=', 'base'), ('src', '=', partner._description), ('lang', '=', 'es_ES')])
+ description_translations.update({'value': 'Spanish description'})
+
+ self.env['ir.translation'].create({
+ 'type': 'model',
+ 'name': 'mail.template,subject',
+ 'module': 'mail',
+ 'lang': 'es_ES',
+ 'res_id': email_template.id,
+ 'value': 'Spanish Subject',
+ 'state': 'translated',
+ })
+ self.env['ir.translation'].create({
+ 'type': 'model',
+ 'name': 'mail.template,body_html',
+ 'module': 'mail',
+ 'lang': 'es_ES',
+ 'res_id': email_template.id,
+ 'value': '<p>Spanish Body</p>',
+ 'state': 'translated',
+ })
+ view = self.env['ir.ui.view'].create({
+ 'name': 'test_layout',
+ 'key': 'test_layout',
+ 'type': 'qweb',
+ 'arch_db': '<body><t t-raw="message.body"/> English Layout <t t-esc="model_description"/></body>'
+ })
+ self.env['ir.model.data'].create({
+ 'name': 'test_layout',
+ 'module': 'test_mail',
+ 'model': 'ir.ui.view',
+ 'res_id': view.id
+ })
+ self.env['ir.translation'].create({
+ 'type': 'model_terms',
+ 'name': 'ir.ui.view,arch_db',
+ 'module': 'test_mail',
+ 'lang': 'es_ES',
+ 'res_id': view.id,
+ 'src': 'English Layout',
+ 'value': 'Spanish Layout',
+ 'state': 'translated',
+ })
+
+ mail_id = email_template.send_mail(partner.id, notif_layout='test_mail.test_layout')
+ mail = self.env['mail.mail'].sudo().browse(mail_id)
+ self.assertEqual(mail.subject, 'Spanish Subject')
+ self.assertEqual(mail.body_html, '<body><p>Spanish Body</p> Spanish Layout Spanish description</body>')
+
def test_template_add_context_action(self):
self.email_template.create_action()