summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/utm/models/ir_http.py6
-rw-r--r--addons/utm/models/utm.py11
-rw-r--r--addons/website_links/models/website_links.py4
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