diff options
| author | qmo-odoo <qmo@odoo.com> | 2019-09-19 11:34:03 +0000 |
|---|---|---|
| committer | Aurélien Warnon <awa@odoo.com> | 2019-09-20 14:44:57 +0000 |
| commit | 79bfdbf30cb1141ab5618ad951a7d0862e634a70 (patch) | |
| tree | c24c0ee52dcb89ff72febe8819634e2cdc92494b /addons/link_tracker | |
| parent | 6c531b3afb1486344309ced9ac5994bc69e5d28c (diff) | |
[MOV] mass_mailing_sms,link_tracker: Move convert_links_text to link_tracker
This method being needed in the new social app, it made sense to move it to
the link_tracker module to make it available for mass_mailing_sms and social
to avoid unnecessary duplicated code.
LINKS:
closes odoo/odoo#34973
Taskid: 2045210
Pr: 37143
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons/link_tracker')
| -rw-r--r-- | addons/link_tracker/models/link_tracker.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/addons/link_tracker/models/link_tracker.py b/addons/link_tracker/models/link_tracker.py index ed12d1e0f01..bf4d25fe465 100644 --- a/addons/link_tracker/models/link_tracker.py +++ b/addons/link_tracker/models/link_tracker.py @@ -15,6 +15,7 @@ from odoo import models, fields, api, _ URL_REGEX = r'(\bhref=[\'"](?!mailto:|tel:|sms:)([^\'"]+)[\'"])' +TEXT_URL_REGEX = r'(https?:\/\/(www\.)?[a-zA-Z0-9@:%._\+~#=/-]{1,64})' def VALIDATE_URL(url): @@ -164,6 +165,27 @@ class LinkTracker(models.Model): return html + def _convert_links_text(self, body, vals, blacklist=None): + shortened_schema = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + '/r/' + unsubscribe_schema = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + '/sms/' + for match in re.findall(TEXT_URL_REGEX, body): + original_url = match[0] + # don't shorten already-shortened links or links towards unsubscribe page + if original_url.startswith(shortened_schema) or original_url.startswith(unsubscribe_schema): + continue + # support blacklist items in path, like /u/ + parsed = urls.url_parse(original_url, scheme='http') + if blacklist and any(item in parsed.path for item in blacklist): + continue + + vals['url'] = utils.unescape(original_url) + link = self.create(vals) + shortened_url = link.short_url + if shortened_url: + body = body.replace(original_url, shortened_url, 1) + + return body + def action_view_statistics(self): action = self.env['ir.actions.act_window'].for_xml_id('link_tracker', 'link_tracker_click_action_statistics') action['domain'] = [('link_id', '=', self.id)] |
