diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-02-06 11:04:02 +0100 |
|---|---|---|
| committer | Julien De Coster <jdc@odoo.com> | 2015-02-12 11:58:13 +0100 |
| commit | e2f19f0ed5238f677a9ca8e0f1b628cbaa806e9b (patch) | |
| tree | b09abad1d7a24c92405093c44f8f5df396cbf0dc /addons/website_links/models | |
| parent | 70c30fe5b1dbc12142fdac74819fe0e71817e5e3 (diff) | |
[IMP] Unsubscribe links in themes
Diffstat (limited to 'addons/website_links/models')
| -rw-r--r-- | addons/website_links/models/website_links.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/addons/website_links/models/website_links.py b/addons/website_links/models/website_links.py index e44ab7c3400..e254e8fb74c 100644 --- a/addons/website_links/models/website_links.py +++ b/addons/website_links/models/website_links.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import datetime import random +import re import string from lxml.html import parse @@ -11,6 +12,7 @@ from urlparse import urlparse from openerp import models, fields, api, _ +URL_REGEX = r'(\bhref=[\'"]([^\'"]+)[\'"])' def VALIDATE_URL(url): if urlparse(url).scheme not in ('http', 'https', 'ftp', 'ftps'): @@ -41,6 +43,33 @@ class website_links(models.Model): short_url_host = fields.Char(string='Host of the short URL', compute='_compute_short_url_host') icon_src = fields.Char(string='Favicon Source', compute='_compute_icon_src') + # List of link's href that will not be converted by the shortener + links_backlist = ['/unsubscribe_from_list'] + + @api.model + def convert_links(self, html, utm_mixin): + for match in re.findall(URL_REGEX, html): + href = match[0] + long_url = match[1] + + if not [s for s in self.links_backlist if s in long_url]: + vals = {'url': long_url} + + if utm_mixin.campaign_id: + vals['campaign_id'] = utm_mixin.campaign_id.id + if utm_mixin.source_id: + vals['source_id'] = utm_mixin.source_id.id + if utm_mixin.medium_id: + vals['medium_id'] = utm_mixin.medium_id.id + + link = self.create(vals) + shorten_url = self.browse(link.id)[0].short_url + + if shorten_url: + new_href = href.replace(long_url, shorten_url) + html = html.replace(href, new_href) + return html + @api.one @api.depends('link_click_ids.link_id') def _compute_count(self): |
