diff options
| author | Raphael Collet <rco@odoo.com> | 2019-02-15 14:36:39 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2019-03-22 16:42:08 +0000 |
| commit | 1ced3bfca457ac50845637bcd42a8e53bd7f088d (patch) | |
| tree | ab337f64040089777f509f24dc08fd08de57baeb /addons/web/static | |
| parent | 579965adc5cf6db67e5dc3b3c6dfd9162b171e90 (diff) | |
[FIX] *: pass context in kwargs in rpc calls
Diffstat (limited to 'addons/web/static')
9 files changed, 19 insertions, 15 deletions
diff --git a/addons/web/static/src/js/_deprecated/data.js b/addons/web/static/src/js/_deprecated/data.js index acac959fcc8..71ae101da7a 100644 --- a/addons/web/static/src/js/_deprecated/data.js +++ b/addons/web/static/src/js/_deprecated/data.js @@ -835,13 +835,13 @@ var Model = Class.extend({ }, call_button: function (method, args) { pyUtils.ensure_evaluated(args, {}); + // context should be the last argument + var context = (args || []).length > 0 ? args.pop() : {}; return session.rpc('/web/dataset/call_button', { model: this.name, method: method, - // Should not be necessary anymore. Integrate remote in this? - domain_id: null, - context_id: args.length - 1, - args: args || [] + args: args || [], + kwargs: {context: context}, }); }, }); diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js index ad5749a16b7..00edadb312a 100644 --- a/addons/web/static/src/js/chrome/action_manager_act_window.js +++ b/addons/web/static/src/js/chrome/action_manager_act_window.js @@ -609,11 +609,11 @@ ActionManager.include({ console.error("Could not JSON.parse arguments", actionData.args); } } - args.push(context.eval()); def = this._rpc({ route: '/web/dataset/call_button', params: { args: args, + kwargs: {context: context.eval()}, method: actionData.name, model: env.model, }, diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js index edfaba60b54..19d2fd57892 100644 --- a/addons/web/static/src/js/views/basic/basic_controller.js +++ b/addons/web/static/src/js/views/basic/basic_controller.js @@ -655,7 +655,8 @@ var BasicController = AbstractController.extend(FieldManagerMixin, { params: { model: 'ir.translation', method: 'translate_fields', - args: [record.model, record.res_id, ev.data.fieldName, record.getContext()], + args: [record.model, record.res_id, ev.data.fieldName], + kwargs: {context: record.getContext()}, } }).then(function (result) { self.do_action(result, { 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 de7fd93d59b..d14b9074d87 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -3901,7 +3901,8 @@ var BasicModel = AbstractModel.extend({ return self._rpc({ model: record.model, method: 'onchange', - args: [idList, currentData, fields, onchangeSpec, context], + args: [idList, currentData, fields, onchangeSpec], + context: context, }) .then(function (result) { if (!record._changes) { diff --git a/addons/web/static/src/js/views/calendar/calendar_controller.js b/addons/web/static/src/js/views/calendar/calendar_controller.js index fa41706de2b..31e3769285e 100644 --- a/addons/web/static/src/js/views/calendar/calendar_controller.js +++ b/addons/web/static/src/js/views/calendar/calendar_controller.js @@ -300,7 +300,8 @@ var CalendarController = AbstractController.extend({ model: self.modelName, method: 'get_formview_id', //The event can be called by a view that can have another context than the default one. - args: [[id], event.context || self.context], + args: [[id]], + context: event.context || self.context, }).then(function (viewId) { self.do_action({ type:'ir.actions.act_window', diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 7a1c8e1373d..d382b686b68 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -2615,7 +2615,8 @@ QUnit.module('ActionManager', { assert.step(args.method || route); if (route === '/web/dataset/call_button') { assert.deepEqual(args, { - args: [[1], {some_key: 2}], + args: [[1]], + kwargs: {context: {some_key: 2}}, method: 'object', model: 'partner', }, "should call route with correct arguments"); diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js index 9308823801b..17c7a2bc3c0 100644 --- a/addons/web/static/tests/fields/basic_fields_tests.js +++ b/addons/web/static/tests/fields/basic_fields_tests.js @@ -1031,7 +1031,7 @@ QUnit.module('basic_fields', { res_id: 1, mockRPC: function (route, args) { if (route === "/web/dataset/call_button" && args.method === 'translate_fields') { - assert.deepEqual(args.args, ["partner",1,"foo",{}], 'should call "call_button" route'); + assert.deepEqual(args.args, ["partner",1,"foo"], 'should call "call_button" route'); return Promise.resolve(); } return this._super.apply(this, arguments); @@ -1666,7 +1666,7 @@ QUnit.module('basic_fields', { res_id: 1, mockRPC: function (route, args) { if (route === "/web/dataset/call_button" && args.method === 'translate_fields') { - assert.deepEqual(args.args, ["partner",1,"txt",{}], 'should call "call_button" route'); + assert.deepEqual(args.args, ["partner",1,"txt"], 'should call "call_button" route'); return Promise.resolve(); } return this._super.apply(this, arguments); diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index e19cadea2cf..33f07493ef9 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -214,7 +214,7 @@ odoo.define('web.basic_model_tests', function (require) { data: this.data, mockRPC: function (route, args) { if (args.method === 'onchange') { - var context = args.args[4]; + var context = args.kwargs.context; assert.deepEqual(context, { hello: 'world' }, "context should be sent by the onchange"); } diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 059bf453be2..b84c4875471 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -3957,9 +3957,9 @@ QUnit.module('Views', { '</form>', mockRPC: function (route, args) { if (args.method === 'onchange') { - assert.strictEqual(args.args[4].test, 1, + assert.strictEqual(args.kwargs.context.test, 1, "the context of the field triggering the onchange should be given"); - assert.strictEqual(args.args[4].int_ctx, undefined, + assert.strictEqual(args.kwargs.context.int_ctx, undefined, "the context of other fields should not be given"); } return this._super.apply(this, arguments); @@ -5782,7 +5782,7 @@ QUnit.module('Views', { if (route === '/web/dataset/call_kw/product/get_formview_id') { return Promise.resolve(false); } else if (route === "/web/dataset/call_button" && args.method === 'translate_fields') { - assert.deepEqual(args.args, ["product",37,"name",{}], 'should call "call_button" route'); + assert.deepEqual(args.args, ["product",37,"name"], 'should call "call_button" route'); nbTranslateCalls++; return Promise.resolve(); } |
