[REF][FIX] link_tracker, mass_mailing: factorize method creating link tracker click values

This commit factorizes the link.tracker.click values computation out of
the add_click method. This method is called when customers click on links
in email that are tracked in Odoo.

Purpose of this commit is

 * to effectively put mass mailing related code into mass mailing.
   Currently link_tracker holds code related to mass mailing which is
   not in its dependency tree. Let us therefore try to be a bit modular
   and add a proper inheritance in mass mailing;
 * allow addons to inherit from the click values prepare method to add
   specific values depending on their behavior like mass mailing adding
   links to a mass mailing and a mass mailing campaign;
This commit is contained in:
Thibault Delavallée
2017-09-15 15:56:23 +02:00
committed by Yannick Tivisse
parent 83d3b281a4
commit 7accd77999
2 changed files with 27 additions and 18 deletions
+16 -18
View File
@@ -244,23 +244,21 @@ class link_tracker_click(models.Model):
again = self.search_count([('link_id', '=', code_rec.link_id.id), ('ip', '=', ip)])
if not again:
country_record = self.env['res.country'].search([('code', '=', country_code)], limit=1)
self.create(
self._get_click_values(dict(
code=code,
ip=ip,
country_code=country_code,
stat_id=stat_id,
)))
vals = {
'link_id': code_rec.link_id.id,
'create_date': datetime.date.today(),
'ip': ip,
'country_id': country_record.id,
'mail_stat_id': stat_id
}
def _get_click_values_from_route(self, route_values):
code = self.env['link.tracker.code'].search([('code', '=', route_values['code'])], limit=1)
country = self.env['res.country'].search([('code', '=', route_values['country_code'])], limit=1)
if stat_id:
mail_stat = self.env['mail.mail.statistics'].search([('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_id:
vals['mass_mailing_id'] = mail_stat.mass_mailing_id.id
self.create(vals)
return {
'link_id': code.link_id.id,
'create_date': datetime.date.today(),
'ip': route_values['ip'],
'country_id': country.id,
}
@@ -17,3 +17,14 @@ class LinkTrackerClick(models.Model):
mail_stat_id = fields.Many2one('mail.mail.statistics', string='Mail Statistics')
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing')
mass_mailing_campaign_id = fields.Many2one('mail.mass_mailing.campaign', string='Mass Mailing Campaign')
def _get_click_values_from_route(self, route_values):
click_values = super(LinkTrackerClick, self)._get_click_values_from_route(route_values)
if route_values['stat_id']:
mail_stat = self.env['mail.mail.statistics'].browse(route_values['stat_id'])
click_values['mail_stat_id'] = mail_stat.id
if mail_stat.mass_mailing_campaign_id:
click_values['mass_mailing_campaign_id'] = mail_stat.mass_mailing_campaign_id.id
if mail_stat.mass_mailing_id:
click_values['mass_mailing_id'] = mail_stat.mass_mailing_id.id
return click_values