diff --git a/addons/mass_mailing/__manifest__.py b/addons/mass_mailing/__manifest__.py index 69ae29f29c0..51f1bd6f86d 100644 --- a/addons/mass_mailing/__manifest__.py +++ b/addons/mass_mailing/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Email Marketing', 'summary': 'Design, send and track emails', 'description': "", - 'version': '2.3', + 'version': '2.4', 'sequence': 60, 'website': 'https://www.odoo.com/page/mailing', 'category': 'Marketing/Email Marketing', diff --git a/addons/mass_mailing/data/mass_mailing_demo.xml b/addons/mass_mailing/data/mass_mailing_demo.xml index 17674fb4136..15e9cc2b790 100644 --- a/addons/mass_mailing/data/mass_mailing_demo.xml +++ b/addons/mass_mailing/data/mass_mailing_demo.xml @@ -83,7 +83,7 @@ - email + new Info <info@yourcompany.example.com>
diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py index b8dabfe112b..82abae99248 100644 --- a/addons/mass_mailing/models/mailing.py +++ b/addons/mass_mailing/models/mailing.py @@ -113,7 +113,7 @@ class MassMailing(models.Model): # mailing options mailing_type = fields.Selection([('mail', 'Email')], string="Mailing Type", default="mail", required=True) reply_to_mode = fields.Selection([ - ('thread', 'Recipient Followers'), ('email', 'Specified Email Address')], + ('update', 'Recipient Followers'), ('new', 'Specified Email Address')], string='Reply-To Mode', compute='_compute_reply_to_mode', readonly=False, store=True, help='Thread: replies go to target document. Email: replies are routed to a given email.') @@ -252,16 +252,16 @@ class MassMailing(models.Model): def _compute_reply_to_mode(self): for mailing in self: if mailing.mailing_model_real in ['res.partner', 'mailing.contact']: - mailing.reply_to_mode = 'email' + mailing.reply_to_mode = 'new' else: - mailing.reply_to_mode = 'thread' + mailing.reply_to_mode = 'update' @api.depends('reply_to_mode') def _compute_reply_to(self): for mailing in self: - if mailing.reply_to_mode == 'email' and not mailing.reply_to: + if mailing.reply_to_mode == 'new' and not mailing.reply_to: mailing.reply_to = self.env.user.email_formatted - elif mailing.reply_to_mode == 'thread': + elif mailing.reply_to_mode == 'update': mailing.reply_to = False @api.depends('mailing_model_name', 'contact_list_ids') @@ -631,11 +631,11 @@ class MassMailing(models.Model): 'composition_mode': 'mass_mail', 'mass_mailing_id': mailing.id, 'mailing_list_ids': [(4, l.id) for l in mailing.contact_list_ids], - 'reply_to_force_new': mailing.reply_to_mode != 'thread', + 'reply_to_force_new': mailing.reply_to_mode == 'new', 'template_id': None, 'mail_server_id': mailing.mail_server_id.id, } - if mailing.reply_to_mode == 'email': + if mailing.reply_to_mode == 'new': composer_values['reply_to'] = mailing.reply_to composer = self.env['mail.compose.message'].with_context(active_ids=res_ids).create(composer_values) diff --git a/addons/mass_mailing/tests/test_mailing_internals.py b/addons/mass_mailing/tests/test_mailing_internals.py index 967420bc8a5..361de85c299 100644 --- a/addons/mass_mailing/tests/test_mailing_internals.py +++ b/addons/mass_mailing/tests/test_mailing_internals.py @@ -72,7 +72,7 @@ class TestMassMailValues(MassMailCommon): self.assertEqual(mailing.medium_id, self.env.ref('utm.utm_medium_email')) self.assertEqual(mailing.mailing_model_name, 'res.partner') self.assertEqual(mailing.mailing_model_real, 'res.partner') - self.assertEqual(mailing.reply_to_mode, 'email') + self.assertEqual(mailing.reply_to_mode, 'new') self.assertEqual(mailing.reply_to, self.user_marketing.email_formatted) # default for partner: remove blacklisted self.assertEqual(literal_eval(mailing.mailing_domain), [('is_blacklisted', '=', False)]) @@ -89,7 +89,7 @@ class TestMassMailValues(MassMailCommon): }) self.assertEqual(mailing.mailing_model_name, 'mailing.list') self.assertEqual(mailing.mailing_model_real, 'mailing.contact') - self.assertEqual(mailing.reply_to_mode, 'email') + self.assertEqual(mailing.reply_to_mode, 'new') self.assertEqual(mailing.reply_to, self.email_reply_to) # default for mailing list: depends upon contact_list_ids self.assertEqual(literal_eval(mailing.mailing_domain), []) @@ -104,7 +104,7 @@ class TestMassMailValues(MassMailCommon): }) self.assertEqual(mailing.mailing_model_name, 'mail.channel') self.assertEqual(mailing.mailing_model_real, 'mail.channel') - self.assertEqual(mailing.reply_to_mode, 'thread') + self.assertEqual(mailing.reply_to_mode, 'update') self.assertFalse(mailing.reply_to) @users('user_marketing') @@ -225,7 +225,7 @@ class TestMassMailFeatures(MassMailCommon, CronMixinCase): 'mailing_model_id': self.env['ir.model']._get('mailing.list').id, 'contact_list_ids': [(6, 0, self.mailing_list_1.ids)], 'keep_archives': True, - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'reply_to': self.email_reply_to, }) self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message']) @@ -241,7 +241,7 @@ class TestMassMailFeatures(MassMailCommon, CronMixinCase): self.mailing_list_1.contact_ids.message_ids.unlink() mailing = mailing.copy() mailing.write({ - 'reply_to_mode': 'thread', + 'reply_to_mode': 'update', }) self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message']) @@ -257,7 +257,7 @@ class TestMassMailFeatures(MassMailCommon, CronMixinCase): mailing = mailing.copy() mailing.write({ 'keep_archives': False, - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'reply_to': self.email_reply_to, }) self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message']) @@ -275,7 +275,7 @@ class TestMassMailFeatures(MassMailCommon, CronMixinCase): mailing = mailing.copy() mailing.write({ 'keep_archives': False, - 'reply_to_mode': 'thread', + 'reply_to_mode': 'update', }) self.assertEqual(self.mailing_list_1.contact_ids.message_ids, self.env['mail.message']) @@ -335,7 +335,7 @@ Website3: ${httpurl} External1: Youpie Email: test@odoo.com
""", 'mailing_model_id': self.env['ir.model']._get('mailing.list').id, - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'reply_to': self.email_reply_to, 'contact_list_ids': [(6, 0, self.mailing_list_1.ids)], 'keep_archives': True, diff --git a/addons/mass_mailing/views/mailing_mailing_views.xml b/addons/mass_mailing/views/mailing_mailing_views.xml index 127b8349cd1..1236fbd6431 100644 --- a/addons/mass_mailing/views/mailing_mailing_views.xml +++ b/addons/mass_mailing/views/mailing_mailing_views.xml @@ -241,14 +241,14 @@ }"/>
+ attrs="{'invisible': ['|', ('reply_to_mode', '=', 'update'), ('mailing_model_name', 'in', ['mailing.contact', 'res.partner', 'mailing.list'])],}"> To track replies, this address must belong to this database.
diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py index 256b68398bd..39043268a3f 100644 --- a/addons/mass_mailing/wizard/mail_compose_message.py +++ b/addons/mass_mailing/wizard/mail_compose_message.py @@ -31,7 +31,7 @@ class MailComposeMessage(models.TransientModel): 'subject': self.subject, 'state': 'done', 'reply_to_mode': self.reply_to_mode, - 'reply_to': self.reply_to if self.reply_to_mode == 'email' else False, + 'reply_to': self.reply_to if self.reply_to_mode == 'new' else False, 'sent_date': fields.Datetime.now(), 'body_html': self.body, 'mailing_model_id': self.env['ir.model']._get(self.model).id, @@ -85,7 +85,7 @@ class MailComposeMessage(models.TransientModel): 'mailing_id': mass_mailing.id, 'mailing_trace_ids': [(0, 0, trace_vals)], # email-mode: keep original message for routing - 'notification': mass_mailing.reply_to_mode == 'thread', + 'notification': mass_mailing.reply_to_mode == 'update', 'auto_delete': not mass_mailing.keep_archives, }) return res diff --git a/addons/mass_mailing_crm/data/mass_mailing_demo.xml b/addons/mass_mailing_crm/data/mass_mailing_demo.xml index 41dcaf2d0eb..21817f9bcf9 100644 --- a/addons/mass_mailing_crm/data/mass_mailing_demo.xml +++ b/addons/mass_mailing_crm/data/mass_mailing_demo.xml @@ -11,7 +11,7 @@ [] - email + new ${object.company_id.email}
diff --git a/addons/mass_mailing_sale/data/mass_mailing_demo.xml b/addons/mass_mailing_sale/data/mass_mailing_demo.xml index c1872022fa3..d80d975c1e9 100644 --- a/addons/mass_mailing_sale/data/mass_mailing_demo.xml +++ b/addons/mass_mailing_sale/data/mass_mailing_demo.xml @@ -11,7 +11,7 @@ [] - email + new ${object.company_id.email}
diff --git a/addons/test_mass_mailing/tests/common.py b/addons/test_mass_mailing/tests/common.py index ff368bf59be..2a132a9656b 100644 --- a/addons/test_mass_mailing/tests/common.py +++ b/addons/test_mass_mailing/tests/common.py @@ -39,7 +39,7 @@ class TestMassMailCommon(MassMailCommon, TestMailCommon): """, 'mailing_type': 'mail', 'mailing_model_id': cls.env['ir.model']._get('mailing.test.blacklist').id, - 'reply_to_mode': 'thread', + 'reply_to_mode': 'update', }) @classmethod diff --git a/addons/test_mass_mailing/tests/test_mailing.py b/addons/test_mass_mailing/tests/test_mailing.py index c5a90927df5..7615d858a45 100644 --- a/addons/test_mass_mailing/tests/test_mailing.py +++ b/addons/test_mass_mailing/tests/test_mailing.py @@ -29,7 +29,7 @@ class TestMassMailing(TestMassMailCommon): 'name': 'TestName', 'subject': 'TestSubject', 'body_html': 'Hello ${object.name}', - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'reply_to': '%s@%s' % (self.test_alias.alias_name, self.test_alias.alias_domain), 'keep_archives': True, 'mailing_model_id': self.env['ir.model']._get('res.partner').id, @@ -129,7 +129,7 @@ class TestMassMailing(TestMassMailCommon): mailing.write({ 'mailing_domain': [('id', 'in', recipients.ids)], 'keep_archives': False, - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'reply_to': self.test_alias.display_name, }) @@ -155,7 +155,7 @@ class TestMassMailing(TestMassMailCommon): mailing.write({ 'mailing_domain': [('id', 'in', recipients.ids)], 'keep_archives': False, - 'reply_to_mode': 'thread', + 'reply_to_mode': 'update', 'reply_to': self.test_alias.display_name, }) @@ -191,7 +191,7 @@ class TestMassMailing(TestMassMailCommon): 'name': 'UTMTest', 'subject': subject, 'body_html': '

Hello ${object.name}

', - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'reply_to': '%s@%s' % (self.test_alias.alias_name, self.test_alias.alias_domain), 'keep_archives': True, 'mailing_model_id': self.env['ir.model']._get('mailing.list').id, diff --git a/addons/test_mass_mailing/tests/test_performance.py b/addons/test_mass_mailing/tests/test_performance.py index 127857c4d4f..33ea1885522 100644 --- a/addons/test_mass_mailing/tests/test_performance.py +++ b/addons/test_mass_mailing/tests/test_performance.py @@ -45,7 +45,7 @@ class TestMassMailPerformance(TestMassMailPerformanceBase): 'name': 'Test', 'subject': 'Test', 'body_html': '

Hello quuxUnsubscribe

', - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'mailing_model_id': self.ref('test_mass_mailing.model_mailing_performance'), 'mailing_domain': [('id', 'in', self.mm_recs.ids)], }) @@ -85,7 +85,7 @@ class TestMassMailBlPerformance(TestMassMailPerformanceBase): 'name': 'Test', 'subject': 'Test', 'body_html': '

Hello quuxUnsubscribe

', - 'reply_to_mode': 'email', + 'reply_to_mode': 'new', 'mailing_model_id': self.ref('test_mass_mailing.model_mailing_performance_blacklist'), 'mailing_domain': [('id', 'in', self.mm_recs.ids)], })