From 018450752dca0e13d8ddc8eecb0a4107b953ac40 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Wed, 1 Apr 2015 11:09:48 +0200 Subject: [PATCH] [FIX] utm* - Allow to customize the cookies name --- addons/utm/models/ir_http.py | 6 +++--- addons/utm/models/utm.py | 11 ++++++++--- addons/website_links/models/website_links.py | 4 ++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/addons/utm/models/ir_http.py b/addons/utm/models/ir_http.py index 7efd80f0737..dd0a93d3976 100644 --- a/addons/utm/models/ir_http.py +++ b/addons/utm/models/ir_http.py @@ -11,7 +11,7 @@ class ir_http(orm.AbstractModel): def _dispatch(self): response = super(ir_http, self)._dispatch() - for var, dummy in self.pool['utm.mixin'].tracking_fields(): - if var in request.params and (var not in request.session or request.session[var] != request.params[var]): - response.set_cookie(var, request.params[var], domain=self.get_utm_domain_cookies()) + for var, dummy, cook in self.pool['utm.mixin'].tracking_fields(): + if var in request.params and request.httprequest.cookies.get(var) != request.params[var]: + response.set_cookie(cook, request.params[var], domain=self.get_utm_domain_cookies()) return response diff --git a/addons/utm/models/utm.py b/addons/utm/models/utm.py index c9cd042247b..e611fb69793 100644 --- a/addons/utm/models/utm.py +++ b/addons/utm/models/utm.py @@ -68,12 +68,17 @@ class utm_mixin(osv.AbstractModel): } def tracking_fields(self): - return [('utm_campaign', 'campaign_id'), ('utm_source', 'source_id'), ('utm_medium', 'medium_id')] + return [ + # ("URL_PARAMETER", "FIELD_NAME_MIXIN", "NAME_IN_COOKIES") + ('utm_campaign', 'campaign_id', 'odoo_utm_campaign'), + ('utm_source', 'source_id', 'odoo_utm_source'), + ('utm_medium', 'medium_id', 'odoo_utm_medium') + ] def tracking_get_values(self, cr, uid, vals, context=None): - for key, fname in self.tracking_fields(): + for key, fname, cook in self.tracking_fields(): field = self._fields[fname] - value = vals.get(fname) or (request and request.httprequest.cookies.get(key)) # params.get should be always in session by the dispatch from ir_http + value = vals.get(fname) or (request and request.httprequest.cookies.get(cook)) # params.get should be always in session by the dispatch from ir_http if field.type == 'many2one' and isinstance(value, basestring): # if we receive a string for a many2one, we search/create the id if value: diff --git a/addons/website_links/models/website_links.py b/addons/website_links/models/website_links.py index e1b0c482934..ac36ff2af8c 100644 --- a/addons/website_links/models/website_links.py +++ b/addons/website_links/models/website_links.py @@ -95,7 +95,7 @@ class website_links(models.Model): parsed = urlparse(self.url) utms = {} - for key, field in self.env['utm.mixin'].tracking_fields(): + for key, field, cook in self.env['utm.mixin'].tracking_fields(): attr = getattr(self, field).name if attr: utms[key] = attr @@ -173,7 +173,7 @@ class website_links(models.Model): create_vals['title'] = self._get_title_from_url(create_vals['url']) # Prevent the UTMs to be set by the values of UTM cookies - for (key, fname) in self.env['utm.mixin'].tracking_fields(): + for (key, fname, cook) in self.env['utm.mixin'].tracking_fields(): if fname not in create_vals: create_vals[fname] = False