From 072522a3e078b9ac39167c0c97fbec1330afbe3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 29 Nov 2021 17:18:54 +0000 Subject: [PATCH] [FIX] mass_mailing: correctly set triggers Some stored mailing fields should use the real mailing_model_id many2one field for triggers and not sub-fields of it. As those are not stored this may lead to unwanted writes. Followup of odoo/odoo#41877 Spotted during Task-2092853 Part-of: odoo/odoo#70859 --- addons/mass_mailing/models/mailing.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py index 42016e94e7d..6b5911d3f07 100644 --- a/addons/mass_mailing/models/mailing.py +++ b/addons/mass_mailing/models/mailing.py @@ -291,12 +291,17 @@ class MassMailing(models.Model): @api.depends('mailing_model_id') def _compute_mailing_model_real(self): for mailing in self: - mailing.mailing_model_real = (mailing.mailing_model_name != 'mailing.list') and mailing.mailing_model_name or 'mailing.contact' + mailing.mailing_model_real = (mailing.mailing_model_id.model != 'mailing.list') and mailing.mailing_model_id.model or 'mailing.contact' - @api.depends('mailing_model_real') + @api.depends('mailing_model_id') def _compute_reply_to_mode(self): + """ For main models not really using chatter to gather answers (contacts + and mailing contacts), set reply-to as email-based. Otherwise answers + by default go on the original discussion thread (business document). Note + that mailing_model being mailing.list means contacting mailing.contact + (see mailing_model_name versus mailing_model_real). """ for mailing in self: - if mailing.mailing_model_real in ['res.partner', 'mailing.contact']: + if mailing.mailing_model_id.model in ['res.partner', 'mailing.list']: mailing.reply_to_mode = 'new' else: mailing.reply_to_mode = 'update' @@ -309,10 +314,10 @@ class MassMailing(models.Model): elif mailing.reply_to_mode == 'update': mailing.reply_to = False - @api.depends('mailing_model_name', 'contact_list_ids') + @api.depends('mailing_model_id', 'contact_list_ids', 'mailing_type') def _compute_mailing_domain(self): for mailing in self: - if not mailing.mailing_model_name: + if not mailing.mailing_model_id: mailing.mailing_domain = '' else: mailing.mailing_domain = repr(mailing._get_default_mailing_domain())