From 228df6a29f76d9e4d61740987f41744960b127ca Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Tue, 23 Jan 2018 10:12:46 +0000 Subject: [PATCH] [FIX] link_tracker: do not die if statistic was unlinked when the user clicks on a tracked link [There's a chance mail statistics disappear](https://github.com/odoo/odoo/blob/b3b8a471cc3e02488dcc0da991fd1d828978220d/addons/mass_mailing/models/mass_mailing.py#L519), which is probably not a very good decision, but there it is. Then, `add_click()` produces a 500 error when a user clicks on the mass mailing if the email comes from an old attempt. Fix is to check the statistic record effectively exists before linking it. Closes #22447. --- addons/link_tracker/models/link_tracker.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/link_tracker/models/link_tracker.py b/addons/link_tracker/models/link_tracker.py index 2159ffdffe2..4f4531b0f6f 100644 --- a/addons/link_tracker/models/link_tracker.py +++ b/addons/link_tracker/models/link_tracker.py @@ -251,16 +251,18 @@ class link_tracker_click(models.Model): 'create_date': datetime.date.today(), 'ip': ip, 'country_id': country_record.id, - 'mail_stat_id': stat_id } if stat_id: mail_stat = self.env['mail.mail.statistics'].search([('id', '=', stat_id)]) + # It could happen that the related ID is no longer available, but we still want the link to work + if mail_stat.exists(): + vals['mail_stat_id'] = stat_id - if mail_stat.mass_mailing_campaign_id: - vals['mass_mailing_campaign_id'] = mail_stat.mass_mailing_campaign_id.id + if mail_stat.mass_mailing_campaign_id: + vals['mass_mailing_campaign_id'] = mail_stat.mass_mailing_campaign_id.id - if mail_stat.mass_mailing_id: - vals['mass_mailing_id'] = mail_stat.mass_mailing_id.id + if mail_stat.mass_mailing_id: + vals['mass_mailing_id'] = mail_stat.mass_mailing_id.id self.create(vals)