From 43875033ae1706d06e6d2f336c89cb00080c43f2 Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Mon, 11 Oct 2021 08:16:57 +0100 Subject: [PATCH] [FIX] mail_tracking: process sent events Up until now, the `sent` event type was never processed, probably because it "made no sense", as an unsent email would never trigger an event. However, it makes sense to process it because you may have a local relay that transmits mails over to the mail provider. In those circumstances, you should have 2 "sent" events (one from the relay and another one from the provider). Also marked some useless parts of code for removal. @Tecnativa TT32365 --- mail_tracking/controllers/main.py | 1 + mail_tracking/models/mail_tracking_email.py | 1 + mail_tracking/models/mail_tracking_event.py | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/mail_tracking/controllers/main.py b/mail_tracking/controllers/main.py index 44af0c0e5..ac273ea38 100644 --- a/mail_tracking/controllers/main.py +++ b/mail_tracking/controllers/main.py @@ -41,6 +41,7 @@ class MailTrackingController(MailController, DiscussController): "ua_family": request.user_agent.browser or False, } + # TODO Remove useless controller @http.route( [ "/mail/tracking/all/", diff --git a/mail_tracking/models/mail_tracking_email.py b/mail_tracking/models/mail_tracking_email.py index 053687fbc..e6eb55750 100644 --- a/mail_tracking/models/mail_tracking_email.py +++ b/mail_tracking/models/mail_tracking_email.py @@ -372,6 +372,7 @@ class MailTrackingEmail(models.Model): _logger.debug("Concurrent event '%s' discarded", event_type) return event_ids + # TODO Remove useless method @api.model def event_process(self, request, post, metadata, event_type=None): # Generic event process hook, inherit it and diff --git a/mail_tracking/models/mail_tracking_event.py b/mail_tracking/models/mail_tracking_event.py index c92fc6f3b..c00af256a 100644 --- a/mail_tracking/models/mail_tracking_event.py +++ b/mail_tracking/models/mail_tracking_event.py @@ -119,6 +119,10 @@ class MailTrackingEvent(models.Model): ) return self._process_data(tracking_email, metadata, event_type, state) + @api.model + def process_sent(self, tracking_email, metadata): + return self._process_status(tracking_email, metadata, "sent", "sent") + @api.model def process_delivered(self, tracking_email, metadata): return self._process_status(tracking_email, metadata, "delivered", "delivered")