[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:
committed by
Yannick Tivisse
parent
83d3b281a4
commit
7accd77999
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user