summaryrefslogtreecommitdiff
path: root/addons/test_mail
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2020-01-16 11:25:59 +0000
committerYannick Tivisse <yti@odoo.com>2020-01-23 10:37:05 +0000
commite73e0ef3c90011c6c3d68554a9becc87cdb7b3ad (patch)
tree928d5a64397c7bf022bc01c5962e4b564faa91ba /addons/test_mail
parent00aae709f18e5d37dc267dfa91860534860a479e (diff)
[FIX] mail: Clean residual context keys on _message_track_post_template
Purpose ======= Clean the context to get rid of residual default_* keys that could cause issues afterward during the mail.message generation. Example: 'default_parent_id' would refer to the parent_id of the current record that was used during its creation, but could refer to wrong parent message id, leading to a traceback in case the related message_id doesn't exist closes odoo/odoo#43830 Taskid: 2176445 X-original-commit: 82d2d581a2590a9c782cbc71b5005a4198b70d77 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'addons/test_mail')
-rw-r--r--addons/test_mail/tests/test_message_track.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/addons/test_mail/tests/test_message_track.py b/addons/test_mail/tests/test_message_track.py
index 61d64a70abe..1c5d19aded4 100644
--- a/addons/test_mail/tests/test_message_track.py
+++ b/addons/test_mail/tests/test_message_track.py
@@ -206,3 +206,52 @@ class TestTracking(TestMailCommon):
new_partner = Partner.search([('email', '=', email_new_partner)])
self.assertTrue(new_partner)
self.assertEqual(new_partner.company_id, company1)
+
+ def test_track_template(self):
+ # Test: Check that default_* keys are not taken into account in _message_track_post_template
+ magic_code = 'Up-Up-Down-Down-Left-Right-Left-Right-Square-Triangle'
+
+ mt_name_changed = self.env['mail.message.subtype'].create({
+ 'name': 'MAGIC CODE WOOP WOOP',
+ 'description': 'SPECIAL CONTENT UNLOCKED'
+ })
+ self.env['ir.model.data'].create({
+ 'name': 'mt_name_changed',
+ 'model': 'mail.message.subtype',
+ 'module': 'mail',
+ 'res_id': mt_name_changed.id
+ })
+ mail_template = self.env['mail.template'].create({
+ 'name': 'SPECIAL CONTENT UNLOCKED',
+ 'subject': 'SPECIAL CONTENT UNLOCKED',
+ 'model_id': self.env.ref('test_mail.model_mail_test').id,
+ 'auto_delete': True,
+ 'body_html': '''<div>WOOP WOOP</div>''',
+ })
+
+ def _track_subtype(self, init_values):
+ if 'name' in init_values and init_values['name'] == magic_code:
+ return 'mail.mt_name_changed'
+ return False
+ self.registry('mail.test')._patch_method('_track_subtype', _track_subtype)
+
+ def _track_template(self, changes):
+ res = {}
+ if 'name' in changes:
+ res['name'] = (mail_template, {'composition_mode': 'mass_mail'})
+ return res
+ self.registry('mail.test')._patch_method('_track_template', _track_template)
+
+ cls = type(self.env['mail.test'])
+ self.assertFalse(hasattr(getattr(cls, 'name'), 'track_visibility'))
+ getattr(cls, 'name').track_visibility = 'always'
+
+ @self.addCleanup
+ def cleanup():
+ del getattr(cls, 'name').track_visibility
+
+ test_mail_record = self.env['mail.test'].create({
+ 'name': 'Zizizatestmailname',
+ 'description': 'Zizizatestmaildescription',
+ })
+ test_mail_record.with_context(default_parent_id=2147483647).write({'name': magic_code})