[FIX] web: pivot keeps controlpanel's domain on reload

Open a pivot view, make a search for some field
Click on a pivot cell to display the list view of elements matching the group's domain
Go back to the pivot using breadcrumbs

Before this commit, the original search domain was not kept across those actions

After this commit, it is kept

This difference is due to the fact that before 12.2, the whole action had an env, containing the search domain
in 12.2 and afterwards, things are not done this way anymore

OPW 2030555
OPW 2030983

closes odoo/odoo#35096

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
This commit is contained in:
Lucas Perais (lpe)
2019-07-23 13:48:37 +00:00
parent 860ab5a1c2
commit 78b09d82fb
2 changed files with 68 additions and 1 deletions
@@ -422,6 +422,7 @@ var PivotModel = AbstractModel.extend({
}
if ('domain' in params) {
this.data.domain = params.domain;
this.initialDomain = params.domain;
} else {
this.data.domain = this.initialDomain;
}
+67 -1
View File
@@ -4,6 +4,7 @@ odoo.define('web.pivot_tests', function (require) {
var core = require('web.core');
var PivotView = require('web.PivotView');
var testUtils = require('web.test_utils');
var testUtilsDom = require('web.test_utils_dom');
var createActionManager = testUtils.createActionManager;
var patchDate = testUtils.mock.patchDate;
@@ -16,7 +17,7 @@ QUnit.module('Views', {
this.data = {
partner: {
fields: {
foo: {string: "Foo", type: "integer"},
foo: {string: "Foo", type: "integer", searchable: true},
bar: {string: "bar", type: "boolean"},
date: {string: "Date", type: "date", store: true, sortable: true},
product_id: {string: "Product", type: "many2one", relation: 'product', store: true},
@@ -1841,6 +1842,71 @@ QUnit.module('Views', {
actionManager.destroy();
});
QUnit.test('Navigation list view for a group and back with breadcrumbs', function (assert) {
assert.expect(16);
// create an action manager to test the interactions with the search view
var readGroupCount = 0;
var actionManager = createActionManager({
data: this.data,
archs: {
'partner,false,pivot': '<pivot>' +
'<field name="customer" type="row"/>' +
'</pivot>',
'partner,false,search': '<search><filter name="bayou" string="Bayou" domain="[(\'foo\',\'=\', 12)]"/></search>',
'partner,false,list': '<tree><field name="foo"/></tree>',
'partner,false,form': '<form><field name="foo"/></form>',
},
intercepts: {
do_action: function (event) {
var action = event.data.action;
actionManager.doAction(action);
}
},
mockRPC: function (route, args) {
if (args.method === 'read_group') {
assert.step('read_group');
var domain = args.kwargs.domain;
if ([0,1].indexOf(readGroupCount) !== -1) {
assert.deepEqual(domain, [], 'initial domain empty');
} else if ([2,3,4,5].indexOf(readGroupCount) !== -1) {
assert.deepEqual(domain, [['foo', '=', 12]],
'domain conserved when back with breadcrumbs');
}
readGroupCount++;
}
if (route === '/web/dataset/search_read') {
assert.step('search_read');
var domain = args.domain;
assert.deepEqual(domain, [['foo', '=', 12], ['customer', '=', 1], ['foo', '=', 12]],
'list domain is correct');
}
return this._super.apply(this, arguments);
}
});
actionManager.doAction({
res_model: 'partner',
type: 'ir.actions.act_window',
views: [[false, 'pivot']],
});
testUtilsDom.click(actionManager.$('.o_filters_menu_button'));
testUtilsDom.click(actionManager.$('.o_menu_item:contains("Bayou")'));
testUtilsDom.click(actionManager.$('.o_pivot_cell_value:nth(1)'))
assert.containsOnce(actionManager, '.o_list_view');
testUtilsDom.click(actionManager.$('.o_control_panel .breadcrumb-item:first() a'));
assert.verifySteps([
'read_group', 'read_group',
'read_group', 'read_group',
'search_read',
'read_group', 'read_group'])
actionManager.destroy();
});
QUnit.module('Sort in comparison mode', {
beforeEach: function () {
this.data.partner.records[0].date = '2016-12-15';