From 062f38577b6712c6fd0bcea839490afa2dca9347 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 12 Jan 2023 12:40:07 +0100 Subject: [PATCH] [IMP] mail_tracking_mailgun: mass mailing manual tracking Mass mailing are tracked from mail.trace as the don't store a message in the db. In order to gather the message_id and be able to do manual checks to mailgun, that's the table where we should get the message id. TT40816 --- mail_tracking/models/mail_tracking_email.py | 10 ++++++++++ mail_tracking_mailgun/models/mail_tracking_email.py | 8 ++------ mail_tracking_mailgun/views/mail_tracking_email.xml | 2 ++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mail_tracking/models/mail_tracking_email.py b/mail_tracking/models/mail_tracking_email.py index 053687fbc..72590c3eb 100644 --- a/mail_tracking/models/mail_tracking_email.py +++ b/mail_tracking/models/mail_tracking_email.py @@ -42,6 +42,7 @@ class MailTrackingEmail(models.Model): mail_message_id = fields.Many2one( string="Message", comodel_name="mail.message", readonly=True, index=True ) + message_id = fields.Char(compute="_compute_message_id") mail_id = fields.Many2one(string="Email", comodel_name="mail.mail", readonly=True) partner_id = fields.Many2one( string="Partner", comodel_name="res.partner", readonly=True @@ -112,6 +113,15 @@ class MailTrackingEmail(models.Model): groups="base.group_system", ) + @api.depends("mail_message_id") + def _compute_message_id(self): + """This helper field will allow us to map the message_id from either the linked + mail.message or a mass.mailing mail.trace. + """ + self.message_id = False + for tracking in self.filtered("mail_message_id"): + tracking.message_id = tracking.mail_message_id.message_id + @api.model_create_multi def create(self, vals_list): records = super().create(vals_list) diff --git a/mail_tracking_mailgun/models/mail_tracking_email.py b/mail_tracking_mailgun/models/mail_tracking_email.py index 529925fb9..f16ff9513 100644 --- a/mail_tracking_mailgun/models/mail_tracking_email.py +++ b/mail_tracking_mailgun/models/mail_tracking_email.py @@ -202,12 +202,8 @@ class MailTrackingEmail(models.Model): https://documentation.mailgun.com/en/latest/api-events.html """ api_key, api_url, domain, *__ = self._mailgun_values() - for tracking in self: - if not tracking.mail_message_id: - raise UserError(_("There is no tracked message!")) - message_id = tracking.mail_message_id.message_id.replace("<", "").replace( - ">", "" - ) + for tracking in self.filtered("message_id"): + message_id = tracking.message_id.replace("<", "").replace(">", "") events = [] url = urljoin(api_url, "/v3/%s/events" % domain) params = { diff --git a/mail_tracking_mailgun/views/mail_tracking_email.xml b/mail_tracking_mailgun/views/mail_tracking_email.xml index d62e00ee1..f3efc6505 100644 --- a/mail_tracking_mailgun/views/mail_tracking_email.xml +++ b/mail_tracking_mailgun/views/mail_tracking_email.xml @@ -7,10 +7,12 @@ +