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 c2a9e627311566ac8091751fabe14b5cbf2bd383..039569017fea580bb92439377309dd5f22c55213 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1017,6 +1017,7 @@ var BasicModel = AbstractModel.extend({ var params = { model: modelName, ids: resIDs, + context: data.getContext(), }; if (options.offset) { params.offset = options.offset; @@ -1040,6 +1041,7 @@ var BasicModel = AbstractModel.extend({ model: modelName, method: 'read', args: [resIDs, [field]], + context: data.getContext(), }).then(function (records) { if (data.data.length) { var dataType = self.localData[data.data[0]].type; diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index 5a6f425f6775dcc550e313114f0d78f7ff805cb7..6642bb18c5698ab7dea59b01b692147fa85e3016 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -65,6 +65,41 @@ odoo.define('web.basic_model_tests', function (require) { }, function () { QUnit.module('BasicModel'); + QUnit.test('context is given when using a resequence', async function (assert) { + assert.expect(2); + delete this.params["res_id"]; + this.data.product.fields.sequence = {string: "Sequence", type: "integer"}; + + const model = createModel({ + Model: BasicModel, + data: this.data, + mockRPC: function (route, args) { + if (route === '/web/dataset/resequence') { + assert.deepEqual(args.context, { active_field: 2 }, + "context should be correct after a resequence"); + } + else if (args.method === "read") { + assert.deepEqual(args.kwargs.context, { active_field: 2 }, + "context should be correct after a 'read' RPC"); + } + return this._super.apply(this, arguments); + }, + }); + const params = _.extend(this.params, { + context: { active_field: 2 }, + groupedBy: ['product_id'], + fieldNames: ['foo'], + }); + + model.load(params) + .then(function (stateID) { + return model.resequence('product', [41, 37], stateID); + }) + .then(function () { + model.destroy(); + }); + }); + QUnit.test('can process x2many commands', async function (assert) { assert.expect(5); diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js index 0fb620f695053be7259144869b006d583e56b362..bdf4c1bcc5e9a4d5ede77690c72c339b324f0a4c 100644 --- a/addons/web/static/tests/views/list_tests.js +++ b/addons/web/static/tests/views/list_tests.js @@ -5448,6 +5448,7 @@ QUnit.module('Views', { if (route === '/web/dataset/resequence') { if (moves === 0) { assert.deepEqual(args, { + context: {}, model: "foo", ids: [4, 3], offset: 13, @@ -5456,6 +5457,7 @@ QUnit.module('Views', { } if (moves === 1) { assert.deepEqual(args, { + context: {}, model: "foo", ids: [4, 2], offset: 12, @@ -5464,6 +5466,7 @@ QUnit.module('Views', { } if (moves === 2) { assert.deepEqual(args, { + context: {}, model: "foo", ids: [2, 4], offset: 12, @@ -5472,6 +5475,7 @@ QUnit.module('Views', { } if (moves === 3) { assert.deepEqual(args, { + context: {}, model: "foo", ids: [4, 2], offset: 12,