[IMP] mass mailing: update reply_to_mode keys
Propagate reply_to radio keys (update and new) to mass mailing in order to have a coherent naming (was thread and email). This naming is also coherent with gateway naming (message_update and message_new). LINKS Task ID-2117639 COM PR odoo/odoo#40931 ENT PR odoo/enterprise#17941 UPG PR odoo/upgrade#2419
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
<field name="source_id" ref="mass_mailing.utm_source_0"/>
|
||||
<field name="mailing_model_id" ref="base.model_res_partner"/>
|
||||
<field name="mailing_domain" eval="[('parent_id', '=', ref('base.res_partner_4'))]"/>
|
||||
<field name="reply_to_mode">email</field>
|
||||
<field name="reply_to_mode">new</field>
|
||||
<field name="reply_to">Info <info@yourcompany.example.com></field>
|
||||
<field name="body_html" type="html">
|
||||
<div class="o_layout o_default_theme">
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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: <a id="url3" href="${httpurl}">${httpurl}</a>
|
||||
External1: <a id="url4" href="https://www.example.com/foo/bar?baz=qux">Youpie</a>
|
||||
Email: <a id="url5" href="mailto:test@odoo.com">test@odoo.com</a></div>""",
|
||||
'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,
|
||||
|
||||
@@ -241,14 +241,14 @@
|
||||
}"/>
|
||||
<field name="reply_to"
|
||||
attrs="{
|
||||
'required': [('reply_to_mode', '=', 'email')],
|
||||
'invisible': [('reply_to_mode', '=', 'thread')],
|
||||
'required': [('reply_to_mode', '=', 'new')],
|
||||
'invisible': [('reply_to_mode', '=', 'update')],
|
||||
'readonly': [('state', 'in', ('sending', 'done'))]
|
||||
}"/>
|
||||
<div style="margin-top:-5px">
|
||||
<small class="oe_edit_only text-muted mb-2"
|
||||
style="font-size:74%"
|
||||
attrs="{'invisible': ['|', ('reply_to_mode', '=', 'thread'), ('mailing_model_name', 'in', ['mailing.contact', 'res.partner', 'mailing.list'])],}">
|
||||
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.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<field name="source_id" ref="utm.utm_source_mailing"/>
|
||||
<field name="mailing_model_id" ref="crm.model_crm_lead"/>
|
||||
<field name="mailing_domain">[]</field>
|
||||
<field name="reply_to_mode">email</field>
|
||||
<field name="reply_to_mode">new</field>
|
||||
<field name="reply_to">${object.company_id.email}</field>
|
||||
<field name="body_html" type="html">
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center">
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<field name="source_id" ref="sale.utm_source_sale_order_0"/>
|
||||
<field name="mailing_model_id" ref="sale.model_sale_order"/>
|
||||
<field name="mailing_domain">[]</field>
|
||||
<field name="reply_to_mode">email</field>
|
||||
<field name="reply_to_mode">new</field>
|
||||
<field name="reply_to">${object.company_id.email}</field>
|
||||
<field name="body_html" type="html">
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center">
|
||||
|
||||
@@ -39,7 +39,7 @@ class TestMassMailCommon(MassMailCommon, TestMailCommon):
|
||||
</div>""",
|
||||
'mailing_type': 'mail',
|
||||
'mailing_model_id': cls.env['ir.model']._get('mailing.test.blacklist').id,
|
||||
'reply_to_mode': 'thread',
|
||||
'reply_to_mode': 'update',
|
||||
})
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -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': '<p>Hello ${object.name}</p>',
|
||||
'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,
|
||||
|
||||
@@ -45,7 +45,7 @@ class TestMassMailPerformance(TestMassMailPerformanceBase):
|
||||
'name': 'Test',
|
||||
'subject': 'Test',
|
||||
'body_html': '<p>Hello <a role="button" href="https://www.example.com/foo/bar?baz=qux">quux</a><a role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>',
|
||||
'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': '<p>Hello <a role="button" href="https://www.example.com/foo/bar?baz=qux">quux</a><a role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>',
|
||||
'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)],
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user