From 924756ba8a7da659699789d19d38b45aea3cf0e9 Mon Sep 17 00:00:00 2001 From: Pierre Verkest Date: Fri, 2 Oct 2015 17:27:55 +0200 Subject: [PATCH] avoid multi call to the server in case of view list editable + quick edition fix context on view list for quick edition --- .../src/js/web_widget_boolean_switch.js | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/web_widget_boolean_switch/static/src/js/web_widget_boolean_switch.js b/web_widget_boolean_switch/static/src/js/web_widget_boolean_switch.js index e646976f..001d5d0b 100644 --- a/web_widget_boolean_switch/static/src/js/web_widget_boolean_switch.js +++ b/web_widget_boolean_switch/static/src/js/web_widget_boolean_switch.js @@ -63,7 +63,7 @@ openerp.web_widget_boolean_switch = function(instance){ // and we are not in edit mode. // We could use this.view.get('actual_mode') which sons // semantically better, possible values are - // at least `view`, `edit`, `create`, ...? to avoid doupt + // at least `view`, `edit`, `create`... ? to avoid doupt // using bool seems safer! if(!this.get('effective_readonly')){ this.internal_set_value(state); @@ -76,15 +76,19 @@ openerp.web_widget_boolean_switch = function(instance){ this.switcher = new openerp.instances.instance0.web.BooleanSwitchWidget( this.$checkbox, options, _.bind(function(event, state) { - var id = this.view.dataset.ids[this.view.dataset.index]; - var values = {}; - values[this.name] = state; - var context = openerp.instances.instance0.web.pyeval.eval( - 'contexts', this.build_context()) - var model = new openerp.instances.instance0.web.Model(this.view.model); - model.call('write', [[id], values], - {'context': this.build_context()}); - this.internal_set_value(state, {'silent': true}); + // get in mind that in case of view list editable + // actual_mode is undefined... + if(this.view.get('actual_mode') === 'view'){ + var id = this.view.dataset.ids[this.view.dataset.index]; + var values = {}; + values[this.name] = state; + var context = openerp.instances.instance0.web.pyeval.eval( + 'contexts', this.build_context()) + var model = new openerp.instances.instance0.web.Model(this.view.model); + model.call('write', [[id], values], + {'context': this.build_context()}); + this.internal_set_value(state, {'silent': true}); + } }, this)); this.on("change:effective_readonly", this, this.switcher_states); this._super(); @@ -130,6 +134,7 @@ openerp.web_widget_boolean_switch = function(instance){ var values = {}; values[this.field.name] = state; var context = py.eval(field.context); + _.extend(context, view.session.user_context) var model = new openerp.instances.instance0.web.Model(this.view.model); model.call('write', [[id], values], {'context': context});