summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2019-02-15 14:36:39 +0000
committerRaphael Collet <rco@odoo.com>2019-03-22 16:42:08 +0000
commit1ced3bfca457ac50845637bcd42a8e53bd7f088d (patch)
treeab337f64040089777f509f24dc08fd08de57baeb /addons/web
parent579965adc5cf6db67e5dc3b3c6dfd9162b171e90 (diff)
[FIX] *: pass context in kwargs in rpc calls
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/controllers/main.py4
-rw-r--r--addons/web/static/src/js/_deprecated/data.js8
-rw-r--r--addons/web/static/src/js/chrome/action_manager_act_window.js2
-rw-r--r--addons/web/static/src/js/views/basic/basic_controller.js3
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js3
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_controller.js3
-rw-r--r--addons/web/static/tests/chrome/action_manager_tests.js3
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js4
-rw-r--r--addons/web/static/tests/views/basic_model_tests.js2
-rw-r--r--addons/web/static/tests/views/form_tests.js6
10 files changed, 21 insertions, 17 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 379838fc7d0..98387b74106 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -937,8 +937,8 @@ class DataSet(http.Controller):
return self._call_kw(model, method, args, kwargs)
@http.route('/web/dataset/call_button', type='json', auth="user")
- def call_button(self, model, method, args, domain_id=None, context_id=None):
- action = self._call_kw(model, method, args, {})
+ def call_button(self, model, method, args, kwargs):
+ action = self._call_kw(model, method, args, kwargs)
if isinstance(action, dict) and action.get('type') != '':
return clean_action(action)
return False
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();
}