From 87de5ddb382ee1c6e30cc915ab445ef9f6e2eed6 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 a8cc1a73d..7f330c91c 100644 --- a/mail_tracking/controllers/main.py +++ b/mail_tracking/controllers/main.py @@ -39,6 +39,7 @@ class MailTrackingController(MailController): 'ua_family': request.user_agent.browser or False, } + # TODO Remove useless controller @http.route(['/mail/tracking/all/', '/mail/tracking/event//'], type='http', auth='none', csrf=False) diff --git a/mail_tracking/models/mail_tracking_email.py b/mail_tracking/models/mail_tracking_email.py index c7e84f03c..b34849d55 100644 --- a/mail_tracking/models/mail_tracking_email.py +++ b/mail_tracking/models/mail_tracking_email.py @@ -363,6 +363,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 e3deab8eb..d124b989f 100644 --- a/mail_tracking/models/mail_tracking_event.py +++ b/mail_tracking/models/mail_tracking_event.py @@ -109,6 +109,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(