From 4e47f917dff837a5c1a5f04eb57cf57278284ccb Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Mon, 5 Jan 2015 17:00:08 +0100 Subject: [PATCH] [FIX] To show all columns in a Kanban view even if they are empty. --- addons/website/models/website.py | 2 ++ addons/website/views/website_templates.xml | 27 ++++++++-------- addons/website_version/controllers/main.py | 31 ++++--------------- addons/website_version/models/experiment.py | 14 +++------ addons/website_version/models/ir_ui_view.py | 4 ++- addons/website_version/models/website.py | 28 +++++++++++++++-- .../views/website_version_templates.xml | 25 --------------- .../views/website_version_views.xml | 4 +-- openerp/models.py | 15 ++++----- 9 files changed, 64 insertions(+), 86 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index e3565e9425d..d262a254b45 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -635,6 +635,8 @@ class website(osv.osv): size = '' if size is None else '/%s' % size return '/website/image/%s/%s/%s%s' % (model, id, field, size) + def google_analytics_data(self, cr, uid, main_object, context=None): + return {} class website_menu(osv.osv): _name = "website.menu" diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index fc407ac2e9e..6ca93994510 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -59,7 +59,7 @@ t-att-data-website-id="website.id if editable and website else None" t-att-data-editable="'1' if editable else None" t-att-data-translatable="'1' if translatable else None" - t-att-data-view-xmlid="xmlid" + t-att-data-view-xmlid="xmlid if editable else None" t-att-data-main-object="repr(main_object) if editable else None" t-att-data-oe-company-name="res_company.name"> @@ -87,22 +87,10 @@ - - - -
@@ -148,6 +136,19 @@
+ diff --git a/addons/website_version/controllers/main.py b/addons/website_version/controllers/main.py index 48eed7b01dd..007abef7d42 100644 --- a/addons/website_version/controllers/main.py +++ b/addons/website_version/controllers/main.py @@ -58,18 +58,18 @@ class Versioning_Controller(Website): result.append({'id':version_id, 'name':ver.browse(version_id).name, 'bold':1}) return result - @http.route(['/website_version/has_experiments'], type = 'json', auth = "public", website = True) + @http.route(['/website_version/has_experiments'], type = 'json', auth = "user", website = True) def has_experiments(self, view_id): v = request.env['ir.ui.view'].browse(int(view_id)) website_id = request.context.get('website_id') return bool(request.env["website_version.experiment_version"].search([('version_id.view_ids.key', '=', v.key),('experiment_id.website_id.id','=',website_id)])) - @http.route(['/website_version/publish_version'], type = 'json', auth = "public", website = True) + @http.route(['/website_version/publish_version'], type = 'json', auth = "user", website = True) def publish_version(self, version_id, save_master, copy_master_name): request.session['version_id'] = 0 return request.env['website_version.version'].publish_version(int(version_id), save_master, copy_master_name) - @http.route(['/website_version/diff_version'], type = 'json', auth = "public", website = True) + @http.route(['/website_version/diff_version'], type = 'json', auth = "user", website = True) def diff_version(self, version_id): mod_version = request.env['website_version.version'] version = mod_version.browse(int(version_id)) @@ -78,25 +78,6 @@ class Versioning_Controller(Website): name_list.append(view.name) return name_list - @http.route(['/website_version/get_analytics'], type = 'json', auth = "public", website = True) - def get_analytics(self, view_id): - #To get the ExpId and the VarId of the view if it is in a running experiment - result = {'ExpId':False, 'VarId': 0} - obj_v = request.env['ir.ui.view'] - view = obj_v.browse(int(view_id)) - #search all the running experiments with the key of view - exp_ids = request.env['website_version.experiment'].search([('experiment_version_ids.version_id.view_ids.key', '=', view.key),('state','=','running'),('experiment_version_ids.version_id.website_id', '=',request.context['website_id'])]) - if exp_ids: - #No overlap between running experiments then we can take the first one - x = exp_ids[0] - result['ExpId'] = x.google_id - if view.version_id: - exp_ver_ids = request.env['website_version.experiment_version'].search([('experiment_id','=',exp_ids[0].id),('version_id','=',view.version_id.id)]) - if exp_ver_ids: - y = exp_ver_ids[0] - result['VarId'] = y.google_index - return result - @http.route(['/website_version/google_access'], type='json', auth="user") def google_authorize(self, **kw): #Check if client_id and client_secret are set to get the authorization from Google @@ -118,7 +99,7 @@ class Versioning_Controller(Website): "url": url } - @http.route(['/website_version/set_google_access'], type = 'json', auth = "public", website = True) + @http.route(['/website_version/set_google_access'], type = 'json', auth = "user", website = True) def set_google_access(self, ga_key, view_id, client_id, client_secret): #To set ga_key, view_id, client_id, client_secret website_id = request.context.get('website_id') @@ -130,7 +111,7 @@ class Versioning_Controller(Website): icp.set_param('google_management_client_secret', client_secret or '', groups=['base.group_system']) - @http.route(['/website_version/all_versions_all_goals'], type = 'json', auth = "public", website = True) + @http.route(['/website_version/all_versions_all_goals'], type = 'json', auth = "user", website = True) def all_versions_all_goals(self, view_id): #To get all versions and all goals to create an experiment view = request.env['ir.ui.view'] @@ -162,7 +143,7 @@ class Versioning_Controller(Website): return (False,exp.name) return (True,"") - @http.route(['/website_version/launch_experiment'], type = 'json', auth = "public", website = True) + @http.route(['/website_version/launch_experiment'], type = 'json', auth = "user", website = True) def launch_experiment(self, name, version_ids, objectives): tab = [] check = self.check_view(version_ids) diff --git a/addons/website_version/models/experiment.py b/addons/website_version/models/experiment.py index a3a0f54fb71..c77b7f04795 100644 --- a/addons/website_version/models/experiment.py +++ b/addons/website_version/models/experiment.py @@ -41,8 +41,8 @@ class Goals(osv.Model): _name = "website_version.goals" _columns = { - 'name': fields.char(string="Name", size=256, required=True), - 'google_ref': fields.char(string="Reference Google", size=256, required=True), + 'name': fields.char(string="Name", required=True), + 'google_ref': fields.char(string="Reference Google", required=True), } EXPERIMENT_STATES = [('running','Running'),('paused','Paused'),('ended','Ended')] @@ -62,7 +62,7 @@ class Experiment(osv.Model): return result _columns = { - 'name': fields.char(string="Title", size=256, required=True), + 'name': fields.char(string="Title", required=True), 'experiment_version_ids': fields.one2many('website_version.experiment_version', 'experiment_id',string="experiment_version_ids"), 'website_id': fields.many2one('website',string="Website", required=True), 'state': fields.selection(EXPERIMENT_STATES, 'Status', required=True, copy=False, track_visibility='onchange'), @@ -70,7 +70,7 @@ class Experiment(osv.Model): 'color': fields.integer('Color Index'), 'version_number' : fields.function(_get_version_number,type='integer'), 'sequence': fields.integer('Sequence', required=True, help="Test."), - 'google_id': fields.char(string="Google_id", size=256), + 'google_id': fields.char(string="Google_id"), } _defaults = { @@ -302,9 +302,3 @@ class google_management(osv.AbstractModel): icp.set_param(cr, SUPERUSER_ID, 'google_%s_rtoken' % self.STR_SERVICE, all_token.get('refresh_token')) icp.set_param(cr, SUPERUSER_ID, 'google_%s_token_validity' % self.STR_SERVICE, datetime.now() + timedelta(seconds=all_token.get('expires_in'))) icp.set_param(cr, SUPERUSER_ID, 'google_%s_token' % self.STR_SERVICE, all_token.get('access_token')) - - - - - - diff --git a/addons/website_version/models/ir_ui_view.py b/addons/website_version/models/ir_ui_view.py index 13d0aaa9412..126f514b305 100644 --- a/addons/website_version/models/ir_ui_view.py +++ b/addons/website_version/models/ir_ui_view.py @@ -81,7 +81,9 @@ class view(osv.Model): def get_view_id(self, cr, uid, xml_id, context=None): if context and 'website_id' in context and not isinstance(xml_id, (int, long)): domain = [('key', '=', xml_id), '|', ('website_id', '=', context['website_id']), ('website_id', '=', False)] - [xml_id] = self.search(cr, uid, domain, order='website_id', limit=1, context=context) + if 'version_id' in context: + domain += ['|', ('version_id', '=', context['version_id']), ('version_id', '=', False)] + [xml_id] = self.search(cr, uid, domain, order='website_id,version_id', limit=1, context=context) else: xml_id = super(view, self).get_view_id(cr, uid, xml_id, context=context) return xml_id diff --git a/addons/website_version/models/website.py b/addons/website_version/models/website.py index 3df5d474f8a..d540b11fb9b 100644 --- a/addons/website_version/models/website.py +++ b/addons/website_version/models/website.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from openerp import api from openerp.osv import osv,fields from openerp.http import request import random @@ -9,12 +10,12 @@ class NewWebsite(osv.Model): _inherit = "website" _columns = { - 'tuto_sync': fields.boolean("How to get GA key and View ID"), + 'tuto_google_analytics': fields.boolean("How to get GA key and View ID"), 'google_analytics_view_id': fields.char('View ID'), 'google_management_authorization': fields.char('Google authorization') } - def get_current_version(self,cr,uid,context=None): + def get_current_version(self, cr, uid, context=None): snap = request.registry['website_version.version'] version_id = request.context.get('version_id') @@ -24,7 +25,7 @@ class NewWebsite(osv.Model): return snap.name_get(cr, uid, [version_id], context=context)[0]; def get_current_website(self, cr, uid, context=None): - website = super(NewWebsite,self).get_current_website(cr, uid, context=context) + website = super(NewWebsite, self).get_current_website(cr, uid, context=context) #We just set the cookie for the first visit if 'website_version_experiment' in request.httprequest.cookies: EXP = json.loads(request.httprequest.cookies.get('website_version_experiment')) @@ -61,4 +62,25 @@ class NewWebsite(osv.Model): request.context['experiment_id'] = 1 return website + @api.model + def google_analytics_data(self, main_object): + result = super(NewWebsite, self).google_analytics_data(main_object) + #To get the ExpId and the VarId of the view if it is in a running experiment + + if main_object and main_object._name == 'ir.ui.view': + view = main_object + #search all the running experiments with the key of view + exp_ids = self.env['website_version.experiment'].search([('experiment_version_ids.version_id.view_ids.key', '=', view.key),('state','=','running'),('experiment_version_ids.version_id.website_id', '=',self.env.context.get('website_id'))]) + if exp_ids: + #No overlap between running experiments then we can take the first one + result['expId'] = exp_ids[0].google_id + version_id = self.env.context.get('version_id') or self.env.context['website_version_experiment'].get(exp_ids[0].google_id) + if version_id: + exp_ver_ids = self.env['website_version.experiment_version'].search([('experiment_id','=',exp_ids[0].id),('version_id','=', int(version_id))]) + if exp_ver_ids: + result['expVar'] = exp_ver_ids[0].google_index + else: + result['expVar'] = 0 + return result + diff --git a/addons/website_version/views/website_version_templates.xml b/addons/website_version/views/website_version_templates.xml index a0e28f9caeb..e76e6de0f8c 100644 --- a/addons/website_version/views/website_version_templates.xml +++ b/addons/website_version/views/website_version_templates.xml @@ -43,31 +43,6 @@ - -