summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorSrushti Patel <shp@openerp.com>2015-06-30 12:44:22 +0530
committerThibault Delavallée <tde@openerp.com>2015-10-26 14:40:02 +0100
commit8913853377948f8e70eb2352dd5c1c8a96f7ebf5 (patch)
tree81d1107b394e719997dd39218489ea2b3dac3af2 /addons
parent2a13a6358a25d7e872b7fcdeb923e1d4710d4fc1 (diff)
[MIG] utm:Migrated into new api.
Diffstat (limited to 'addons')
-rw-r--r--addons/utm/data/utm_data.xml8
-rw-r--r--addons/utm/models/ir_http.py8
-rw-r--r--addons/utm/models/utm.py106
-rw-r--r--addons/utm/views/utm.xml6
4 files changed, 55 insertions, 73 deletions
diff --git a/addons/utm/data/utm_data.xml b/addons/utm/data/utm_data.xml
index 9f0ae36dcd9..13f3c11cd0e 100644
--- a/addons/utm/data/utm_data.xml
+++ b/addons/utm/data/utm_data.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0"?>
-<openerp>
- <data>
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
<!-- UTM Campain -->
<record model="utm.campaign" id="utm_campaign_fall_drive">
<field name="name">Sale</field>
@@ -60,5 +59,4 @@
<record model="utm.medium" id="utm_medium_google_adwords">
<field name="name">Google Adwords</field>
</record>
- </data>
-</openerp>
+</odoo>
diff --git a/addons/utm/models/ir_http.py b/addons/utm/models/ir_http.py
index dd0a93d3976..d690d42399c 100644
--- a/addons/utm/models/ir_http.py
+++ b/addons/utm/models/ir_http.py
@@ -1,16 +1,16 @@
# -*- coding: utf-8 -*-
-from openerp.http import request
-from openerp.osv import orm
+from odoo.http import request
+from odoo import models
-class ir_http(orm.AbstractModel):
+class IrHttp(models.AbstractModel):
_inherit = 'ir.http'
def get_utm_domain_cookies(self):
return request.httprequest.host
def _dispatch(self):
- response = super(ir_http, self)._dispatch()
+ response = super(IrHttp, self)._dispatch()
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())
diff --git a/addons/utm/models/utm.py b/addons/utm/models/utm.py
index 3168d9255b0..2779f04c357 100644
--- a/addons/utm/models/utm.py
+++ b/addons/utm/models/utm.py
@@ -1,86 +1,72 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from openerp.osv import osv, fields
-from openerp.http import request
+from odoo import api, fields, models
+from odoo.http import request
-class utm_medium(osv.Model):
+class UtmMedium(models.Model):
# OLD crm.case.channel
- _name = "utm.medium"
- _description = "Channels"
+ _name = 'utm.medium'
+ _description = 'Channels'
_order = 'name'
- _columns = {
- 'name': fields.char('Channel Name', required=True),
- 'active': fields.boolean('Active'),
- }
- _defaults = {
- 'active': lambda *a: 1,
- }
+ name = fields.Char(string='Channel Name', required=True)
+ active = fields.Boolean(default=True)
-class utm_campaign(osv.Model):
+
+class UtmCampaign(models.Model):
# OLD crm.case.resource.type
- _name = "utm.campaign"
- _description = "Campaign"
- _rec_name = "name"
- _columns = {
- 'name': fields.char('Campaign Name', required=True, translate=True),
- }
+ _name = 'utm.campaign'
+ _description = 'Campaign'
+
+ name = fields.Char(string='Campaign Name', required=True, translate=True)
+
+class UtmSource(models.Model):
+ _name = 'utm.source'
+ _description = 'Source'
-class utm_source(osv.Model):
- _name = "utm.source"
- _description = "Source"
- _rec_name = "name"
- _columns = {
- 'name': fields.char('Source Name', required=True, translate=True),
- }
+ name = fields.Char(string='Source Name', required=True, translate=True)
-class utm_mixin(osv.AbstractModel):
+class UtmMixin(models.AbstractModel):
+
"""Mixin class for objects which can be tracked by marketing. """
_name = 'utm.mixin'
- _columns = {
- 'campaign_id': fields.many2one('utm.campaign', 'Campaign', # old domain ="['|',('team_id','=',team_id),('team_id','=',False)]"
- help="This is a name that helps you keep track of your different campaign efforts Ex: Fall_Drive, Christmas_Special"),
- 'source_id': fields.many2one('utm.source', 'Source', help="This is the source of the link Ex: Search Engine, another domain, or name of email list"),
- 'medium_id': fields.many2one('utm.medium', 'Medium', help="This is the method of delivery. Ex: Postcard, Email, or Banner Ad", oldname='channel_id'),
- }
+ campaign_id = fields.Many2one('utm.campaign', 'Campaign',
+ help="This is a name that helps you keep track of your different campaign efforts Ex: Fall_Drive, Christmas_Special")
+ source_id = fields.Many2one('utm.source', 'Source',
+ help="This is the source of the link Ex:Search Engine, another domain,or name of email list")
+ medium_id = fields.Many2one('utm.medium', 'Medium',
+ help="This is the method of delivery.Ex: Postcard, Email, or Banner Ad", oldname='channel_id')
def tracking_fields(self):
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')
+ ('utm_medium', 'medium_id', 'odoo_utm_medium'),
]
- def tracking_get_values(self, cr, uid, vals, context=None):
- for key, fname, cook in self.tracking_fields():
- field = self._fields[fname]
- 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):
+ @api.model
+ def default_get(self, fields):
+ values = super(UtmMixin, self).default_get(fields)
+
+ for url_param, field_name, cookie_name in self.tracking_fields():
+ if field_name in fields:
+ field = self._fields[field_name]
+ value = False
+ if request:
+ # ir_http dispatch saves the url params in a cookie
+ value = request.httprequest.cookies.get(cookie_name)
# if we receive a string for a many2one, we search/create the id
- if value:
- Model = self.pool[field.comodel_name]
- rel_id = Model.name_search(cr, uid, value, context=context)
- if rel_id:
- rel_id = rel_id[0][0]
- else:
- rel_id = Model.create(cr, uid, {'name': value}, context=context)
- vals[fname] = rel_id
- else:
- # Here the code for others cases that many2one
- vals[fname] = value
- return vals
-
- def _get_default_track(self, cr, uid, field, context=None):
- return self.tracking_get_values(cr, uid, {}, context=context).get(field)
-
- _defaults = {
- 'source_id': lambda self, cr, uid, ctx: self._get_default_track(cr, uid, 'source_id', ctx),
- 'campaign_id': lambda self, cr, uid, ctx: self._get_default_track(cr, uid, 'campaign_id', ctx),
- 'medium_id': lambda self, cr, uid, ctx: self._get_default_track(cr, uid, 'medium_id', ctx),
- }
+ if field.type == 'many2one' and isinstance(value, basestring) and value:
+ Model = self.env[field.comodel_name]
+ records = Model.search([('name', '=', value)], limit=1)
+ if not records:
+ records = Model.create({'name': value})
+ value = records.id
+ values[field_name] = value
+ return values
diff --git a/addons/utm/views/utm.xml b/addons/utm/views/utm.xml
index 832b6bc22fe..e1792eedfcf 100644
--- a/addons/utm/views/utm.xml
+++ b/addons/utm/views/utm.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<openerp>
- <data>
+<odoo>
<menuitem id="menu_link_tracker_root" name="Link Tracker" groups="base.group_no_one" sequence="30"/>
<menuitem name="UTMs" id="marketing_utm" groups="base.group_configuration" parent="menu_link_tracker_root" sequence="99"/>
@@ -108,5 +107,4 @@
</record>
<menuitem action="utm_source_action" id="menu_utm_source" parent="marketing_utm" sequence="4" groups="base.group_no_one"/>
- </data>
-</openerp> \ No newline at end of file
+</odoo>