diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-11-27 14:34:35 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-11-27 14:34:35 +0100 |
| commit | 908c986ce8f96d7ec595005256793f34bb8034da (patch) | |
| tree | 17e3b12d485cdf7e91ffdd09bc1224fa211e8dd2 /addons/web/static/src | |
| parent | f243fd7c46234691ce5ff6416a214676386c4de0 (diff) | |
[FIX] onchange for client-side evaluation: use regular method calls
bzr revid: xmo@openerp.com-20121127133435-ss3g97sm43mrtbla
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index a2768e196c7..5d94cdb5d89 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -437,26 +437,26 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM var method = call[1]; if (!_.str.trim(call[2])) { - return {method: method, args: [], context_index: null} + return {method: method, args: []} } var argument_replacement = { 'False': function () {return false;}, 'True': function () {return true;}, 'None': function () {return null;}, - 'context': function (i) { - context_index = i; - var ctx = new instance.web.CompoundContext(self.dataset.get_context(), widget.build_context() ? widget.build_context() : {}); - return ctx; + 'context': function () { + return new instance.web.CompoundContext( + self.dataset.get_context(), + widget.build_context() ? widget.build_context() : {}); } }; - var parent_fields = null, context_index = null; + var parent_fields = null; var args = _.map(call[2].split(','), function (a, i) { var field = _.str.trim(a); // literal constant or context if (field in argument_replacement) { - return argument_replacement[field](i); + return argument_replacement[field](); } // literal number if (/^-?\d+(\.\d+)?$/.test(field)) { @@ -491,8 +491,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return { method: method, - args: args, - context_index: context_index + args: args }; }, do_onchange: function(widget, processed) { @@ -511,18 +510,15 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM var on_change = widget.node.attrs.on_change; if (on_change) { var change_spec = self.parse_on_change(on_change, widget); - def = self.rpc('/web/dataset/onchange', { - model: self.dataset.model, - method: change_spec.method, - args: [(self.datarecord.id == null ? [] : [self.datarecord.id])].concat(change_spec.args), - context_id: change_spec.context_index == undefined ? null : change_spec.context_index + 1 - }); + var id = [self.datarecord.id == null ? [] : [self.datarecord.id]]; + def = new instance.web.Model(self.dataset.model).call( + change_spec.method, id.concat(change_spec.args)); } else { def = $.when({}); } return def.then(function(response) { if (widget.field['change_default']) { - var fieldname = widget.name + var fieldname = widget.name; var value_; if (response.value && (fieldname in response.value)) { // Use value from onchange if onchange executed @@ -534,11 +530,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM var condition = fieldname + '=' + value_; if (value_) { - return self.rpc('/web/dataset/call', { - model: 'ir.values', - method: 'get_defaults', - args: [self.model, condition] - }).then(function (results) { + return new instance.web.Model('ir.values').call( + 'get_defaults', [self.model, condition] + ).then(function (results) { if (!results.length) { return response; } |
