diff --git a/mail_tracking_mass_mailing/__manifest__.py b/mail_tracking_mass_mailing/__manifest__.py index 1b190b2dd..de327eb26 100644 --- a/mail_tracking_mass_mailing/__manifest__.py +++ b/mail_tracking_mass_mailing/__manifest__.py @@ -7,7 +7,7 @@ { "name": "Mail tracking for mass mailing", "summary": "Improve mass mailing email tracking", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "category": "Social Network", "website": "https://github.com/OCA/social", "author": "Tecnativa, " "Odoo Community Association (OCA)", @@ -18,9 +18,9 @@ "depends": ["mass_mailing", "mail_tracking"], "data": [ "views/mail_tracking_email_view.xml", - "views/mail_mail_statistics_view.xml", + "views/mail_trace_view.xml", "views/mail_mass_mailing_view.xml", - "views/mail_mass_mailing_contact_view.xml", + "views/mailing_contact_view.xml", ], "pre_init_hook": "pre_init_hook", } diff --git a/mail_tracking_mass_mailing/hooks.py b/mail_tracking_mass_mailing/hooks.py index 046635590..e1ed7ff34 100644 --- a/mail_tracking_mass_mailing/hooks.py +++ b/mail_tracking_mass_mailing/hooks.py @@ -14,7 +14,7 @@ _logger = logging.getLogger(__name__) def pre_init_hook(cr): if column_add_with_value: - _logger.info("Creating mail.mass_mailing.contact.email_score column " "with value 50.0") + _logger.info("Creating mailing_contact.email_score column " "with value 50.0") column_add_with_value( - cr, "mail_mass_mailing_contact", "email_score", "double precision", 50.0 + cr, "mailing_contact", "email_score", "double precision", 50.0 ) diff --git a/mail_tracking_mass_mailing/models/__init__.py b/mail_tracking_mass_mailing/models/__init__.py index 12739f3e9..1a04775c1 100644 --- a/mail_tracking_mass_mailing/models/__init__.py +++ b/mail_tracking_mass_mailing/models/__init__.py @@ -5,5 +5,5 @@ from . import mail_mail from . import mail_tracking_email from . import mail_tracking_event -from . import mail_mail_statistics -from . import mail_mass_mailing_contact +from . import mailing_trace +from . import mailing_contact diff --git a/mail_tracking_mass_mailing/models/mail_mail.py b/mail_tracking_mass_mailing/models/mail_mail.py index a24f73c8f..b0ff8fb17 100644 --- a/mail_tracking_mass_mailing/models/mail_mail.py +++ b/mail_tracking_mass_mailing/models/mail_mail.py @@ -14,7 +14,7 @@ class MailMail(models.Model): res["mail_id_int"] = self.id res["mass_mailing_id"] = self.mailing_id.id res["mail_stats_id"] = ( - self.statistics_ids[:1].id if self.statistics_ids else False + self.mailing_trace_ids[:1].id if self.mailing_trace_ids else False ) return res diff --git a/mail_tracking_mass_mailing/models/mail_tracking_email.py b/mail_tracking_mass_mailing/models/mail_tracking_email.py index 3c981a368..11cd7d5a4 100644 --- a/mail_tracking_mass_mailing/models/mail_tracking_email.py +++ b/mail_tracking_mass_mailing/models/mail_tracking_email.py @@ -9,16 +9,16 @@ class MailTrackingEmail(models.Model): _inherit = "mail.tracking.email" mass_mailing_id = fields.Many2one( - string="Mass mailing", comodel_name="mail.mass_mailing", readonly=True + string="Mass mailing", comodel_name="mailing.mailing", readonly=True ) mail_stats_id = fields.Many2one( - string="Mail statistics", comodel_name="mail.mail.statistics", readonly=True + string="Mail statistics", comodel_name="mailing.trace", readonly=True ) mail_id_int = fields.Integer(string="Mail ID", readonly=True) @api.model def _statistics_link_prepare(self, tracking): - """Inherit this method to link other object to mail.mail.statistics""" + """Inherit this method to link other object to mailing.trace""" return {"mail_tracking_id": tracking.id} @api.model @@ -29,7 +29,6 @@ class MailTrackingEmail(models.Model): tracking.mail_stats_id.write(self._statistics_link_prepare(tracking)) return tracking - @api.multi def _contacts_email_bounced_set(self, reason, event=None): recipients = [] if event and event.recipient_address: @@ -37,11 +36,10 @@ class MailTrackingEmail(models.Model): else: recipients = list(filter(None, self.mapped("recipient_address"))) for recipient in recipients: - self.env["mail.mass_mailing.contact"].search( + self.env["mailing.contact"].search( [("email", "=ilike", recipient)] ).email_bounced_set(self, reason, event=event) - @api.multi def smtp_error(self, mail_server, smtp_server, exception): res = super(MailTrackingEmail, self).smtp_error( mail_server, smtp_server, exception @@ -49,7 +47,6 @@ class MailTrackingEmail(models.Model): self._contacts_email_bounced_set("error") return res - @api.multi def event_create(self, event_type, metadata): res = super(MailTrackingEmail, self).event_create(event_type, metadata) if event_type in {"hard_bounce", "spam", "reject"}: diff --git a/mail_tracking_mass_mailing/models/mail_tracking_event.py b/mail_tracking_mass_mailing/models/mail_tracking_event.py index e36c7bce2..0f7ad1d7d 100644 --- a/mail_tracking_mass_mailing/models/mail_tracking_event.py +++ b/mail_tracking_mass_mailing/models/mail_tracking_event.py @@ -10,7 +10,7 @@ class MailTrackingEvent(models.Model): mass_mailing_id = fields.Many2one( string="Mass mailing", - comodel_name="mail.mass_mailing", + comodel_name="mailing.mailing", readonly=True, related="tracking_email_id.mass_mailing_id", store=True, @@ -19,12 +19,12 @@ class MailTrackingEvent(models.Model): @api.model def process_open(self, tracking_email, metadata): res = super(MailTrackingEvent, self).process_open(tracking_email, metadata) - mail_mail_stats = self.sudo().env["mail.mail.statistics"] + mail_mail_stats = self.sudo().env["mailing.trace"] mail_mail_stats.set_opened(mail_mail_ids=[tracking_email.mail_id_int]) return res def _tracking_set_bounce(self, tracking_email, metadata): - mail_mail_stats = self.sudo().env["mail.mail.statistics"] + mail_mail_stats = self.sudo().env["mailing.trace"] mail_mail_stats.set_bounced(mail_mail_ids=[tracking_email.mail_id_int]) @api.model diff --git a/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py b/mail_tracking_mass_mailing/models/mailing_contact.py similarity index 71% rename from mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py rename to mail_tracking_mass_mailing/models/mailing_contact.py index fdfac2240..63b7398a9 100644 --- a/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py +++ b/mail_tracking_mass_mailing/models/mailing_contact.py @@ -6,17 +6,19 @@ from odoo import api, fields, models class MailMassMailingContact(models.Model): - _name = "mail.mass_mailing.contact" - _inherit = ["mail.mass_mailing.contact", "mail.bounced.mixin"] + _name = "mailing.contact" + _inherit = ["mailing.contact", "mail.bounced.mixin"] email_score = fields.Float( string="Email score", readonly=True, store=False, compute="_compute_email_score" ) - @api.multi @api.depends("email") def _compute_email_score(self): - for contact in self.filtered("email"): + with_email = self.filtered("email") + for contact in with_email: contact.email_score = self.env[ "mail.tracking.email" ].email_score_from_email(contact.email) + remaining = self - with_email + remaining.email_score = 0.0 diff --git a/mail_tracking_mass_mailing/models/mail_mail_statistics.py b/mail_tracking_mass_mailing/models/mailing_trace.py similarity index 87% rename from mail_tracking_mass_mailing/models/mail_mail_statistics.py rename to mail_tracking_mass_mailing/models/mailing_trace.py index 690fbce9a..c5a4d2b19 100644 --- a/mail_tracking_mass_mailing/models/mail_mail_statistics.py +++ b/mail_tracking_mass_mailing/models/mailing_trace.py @@ -5,8 +5,8 @@ from odoo import fields, models -class MailMailStatistics(models.Model): - _inherit = "mail.mail.statistics" +class MailTrace(models.Model): + _inherit = "mailing.trace" mail_tracking_id = fields.Many2one( string="Mail tracking", comodel_name="mail.tracking.email", readonly=True diff --git a/mail_tracking_mass_mailing/tests/test_mass_mailing.py b/mail_tracking_mass_mailing/tests/test_mass_mailing.py index faf042aa0..f01c3db79 100644 --- a/mail_tracking_mass_mailing/tests/test_mass_mailing.py +++ b/mail_tracking_mass_mailing/tests/test_mass_mailing.py @@ -17,21 +17,21 @@ mock_send_email = "odoo.addons.base.models.ir_mail_server." "IrMailServer.send_e class TestMassMailing(TransactionCase): def setUp(self, *args, **kwargs): super(TestMassMailing, self).setUp(*args, **kwargs) - self.list = self.env["mail.mass_mailing.list"].create({"name": "Test mail tracking"}) + self.list = self.env["mailing.list"].create({"name": "Test mail tracking"}) self.list.name = "{} #{}".format(self.list.name, self.list.id) - self.contact_a = self.env["mail.mass_mailing.contact"].create( + self.contact_a = self.env["mailing.contact"].create( { "list_ids": [(6, 0, self.list.ids)], "name": "Test contact A", "email": "contact_a@example.com", } ) - self.mailing = self.env["mail.mass_mailing"].create( + self.mailing = self.env["mailing.mailing"].create( { - "name": "Test subject", + "subject": "Test subject", "email_from": "from@example.com", "mailing_model_id": self.env.ref( - "mass_mailing.model_mail_mass_mailing_contact" + "mass_mailing.model_mailing_contact" ).id, "mailing_domain": "[('list_ids', 'in', %d)]" % self.list.id, "contact_list_ids": [(6, False, [self.list.id])], @@ -44,8 +44,8 @@ class TestMassMailing(TransactionCase): def test_smtp_error(self): with mock.patch(mock_send_email) as mock_func: mock_func.side_effect = Warning("Mock test error") - self.mailing.send_mail() - for stat in self.mailing.statistics_ids: + self.mailing.action_send_mail() + for stat in self.mailing.mailing_trace_ids: if stat.mail_mail_id: stat.mail_mail_id.send() tracking = self.env["mail.tracking.email"].search( @@ -58,8 +58,8 @@ class TestMassMailing(TransactionCase): self.assertTrue(self.contact_a.email_bounced) def test_tracking_email_link(self): - self.mailing.send_mail() - for stat in self.mailing.statistics_ids: + self.mailing.action_send_mail() + for stat in self.mailing.mailing_trace_ids: if stat.mail_mail_id: stat.mail_mail_id.send() tracking_email = self.env["mail.tracking.email"].search( @@ -80,8 +80,8 @@ class TestMassMailing(TransactionCase): self.assertTrue(stat.opened) def _tracking_email_bounce(self, event_type, state): - self.mailing.send_mail() - for stat in self.mailing.statistics_ids: + self.mailing.action_send_mail() + for stat in self.mailing.mailing_trace_ids: if stat.mail_mail_id: stat.mail_mail_id.send() tracking_email = self.env["mail.tracking.email"].search( diff --git a/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml b/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml index 651931e18..44e960f8f 100644 --- a/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml +++ b/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml @@ -8,7 +8,6 @@ Mail tracking emails mail.tracking.email - form tree,form [('mass_mailing_id', '!=', False)] @@ -16,7 +15,6 @@ Mail tracking events mail.tracking.event - form tree,form [('mass_mailing_id', '!=', False)] diff --git a/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml b/mail_tracking_mass_mailing/views/mail_trace_view.xml similarity index 87% rename from mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml rename to mail_tracking_mass_mailing/views/mail_trace_view.xml index 0ec98caff..56d7c4a20 100644 --- a/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml +++ b/mail_tracking_mass_mailing/views/mail_trace_view.xml @@ -4,10 +4,10 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). --> - + Add tracking email info - mail.mail.statistics - + mailing.trace + diff --git a/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml b/mail_tracking_mass_mailing/views/mailing_contact_view.xml similarity index 86% rename from mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml rename to mail_tracking_mass_mailing/views/mailing_contact_view.xml index 4c572d89c..8363399a7 100644 --- a/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml +++ b/mail_tracking_mass_mailing/views/mailing_contact_view.xml @@ -6,7 +6,7 @@ Add email score and stars - mail.mass_mailing.contact + mailing.contact @@ -18,10 +18,10 @@ Filter bounced contacts - mail.mass_mailing.contact + mailing.contact - +