From 62a80808189e0cedb69a637df9e669f8e47848fe Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 28 Sep 2011 18:44:28 +0200 Subject: [PATCH] [fix] problem with context keys not passed correctly in some cases, here the invoice created from a sale order bzr revid: nicolas.vanhoren@openerp.com-20110928164428-07tzfmcip03xspjq --- addons/web/common/nonliterals.py | 5 ++++- addons/web/static/src/js/view_form.js | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/addons/web/common/nonliterals.py b/addons/web/common/nonliterals.py index ef2b5c0cad1..4db333a5769 100644 --- a/addons/web/common/nonliterals.py +++ b/addons/web/common/nonliterals.py @@ -237,7 +237,10 @@ class CompoundContext(BaseContext): def evaluate(self, context=None): ctx = dict(context or {}) - ctx.update(self.get_eval_context() or {}) + eval_context = self.get_eval_context() + if eval_context: + eval_context = self.session.eval_context(eval_context) + ctx.update(eval_context) final_context = {} for context_to_eval in self.contexts: if not isinstance(context_to_eval, (dict, BaseContext)): diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e21d0541a81..bfdb12809f6 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -998,12 +998,16 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f focus: function() { }, _build_view_fields_values: function() { - var a_dataset = this.view.dataset || {}; + var a_dataset = this.view.dataset; var fields_values = this.view.get_fields_values(); var parent_values = a_dataset.parent_view ? a_dataset.parent_view.get_fields_values() : {}; fields_values.parent = parent_values; return fields_values; }, + _build_eval_context: function() { + var a_dataset = this.view.dataset; + return new openerp.web.CompoundContext(a_dataset.get_context(), this._build_view_fields_values()); + }, /** * Builds a new context usable for operations related to fields by merging * the fields'context with the action's context. @@ -1016,7 +1020,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f var v_context = new openerp.web.CompoundContext(); _.each(v_contexts, function(x) {v_context.add(x);}); if (_.detect(v_contexts, function(x) {return !!x.__ref;})) { - var fields_values = this._build_view_fields_values(); + var fields_values = this._build_eval_context(); v_context.set_eval_context(fields_values); } // if there is a context on the node, overrides the model's context @@ -1027,7 +1031,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f var f_domain = this.field.domain || null; var v_domain = this.node.attrs.domain || []; if (!(v_domain instanceof Array) || true) { //TODO niv: remove || true - var fields_values = this._build_view_fields_values(); + var fields_values = this._build_eval_context(); v_domain = new openerp.web.CompoundDomain(v_domain).set_eval_context(fields_values); } // if there is a domain on the node, overrides the model's domain