diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 64030cea866d50f1393600f8dd56f95727f955ba..cde2d2479ac3ccd9aa591d5d2504806f1ae66f58 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -2002,7 +2002,7 @@ var BasicModel = AbstractModel.extend({ } _.extend(evalContext, {parent: parent.data}); } - return _.extend({}, session.user_context, evalContext); + return _.extend({}, session.user_context, element.context, evalContext); }, /** * Returns the list of field names of the given element according to its diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index d4ff7af9bb54f060f6e05e51dbc00a7b51737d3f..bedcf83b139fc3e75ae6f998d75c608549a8b051 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4024,5 +4024,35 @@ QUnit.module('Views', { form.destroy(); }); + + QUnit.test('action context is used when evaluating domains', function (assert) { + assert.expect(1); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<sheet>' + + '<field name="trululu" domain="[(\'id\', \'in\', context.get(\'product_ids\', []))]"/>' + + '</sheet>' + + '</form>', + res_id: 1, + viewOptions: { + context: {product_ids: [45,46,47]} + }, + mockRPC: function (route, args) { + if (args.method === 'name_search') { + assert.deepEqual(args.kwargs.args[0], ['id', 'in', [45,46,47]], + "domain should be properly evaluated"); + } + return this._super.apply(this, arguments); + }, + }); + form.$buttons.find('.o_form_button_edit').click(); + form.$('div[name="trululu"] input').click(); + + form.destroy(); + }); }); });