From aaea6fd08817f28cd47e67c4c7227969a5e4956f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Mon, 28 May 2018 16:32:33 +0200 Subject: [PATCH] [FIX] web: small performance fix in calendar view In some cases, the calendar view sends a trivial domain, such as ["partner_id", "not in", []] This is clearly not really useful, and it could hurt performances in some cases (for example, if the partner_id field is a related on a large table, and non stored). This is clearly not a complete fix, but it is easy, safe and does not hurt. --- .../src/js/views/calendar/calendar_model.js | 4 +++- .../web/static/tests/views/calendar_tests.js | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js index ba34d754bdb..9285034398d 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -355,7 +355,9 @@ return AbstractModel.extend({ domain.push([field, 'in', authorizedValues[field]]); } for (var field in avoidValues) { - domain.push([field, 'not in', avoidValues[field]]); + if (avoidValues[field].length > 0) { + domain.push([field, 'not in', avoidValues[field]]); + } } return domain; diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js index a54ba356224..d850af203e1 100644 --- a/addons/web/static/tests/views/calendar_tests.js +++ b/addons/web/static/tests/views/calendar_tests.js @@ -1208,7 +1208,20 @@ QUnit.module('Views', { }); QUnit.test('"all" filter', function (assert) { - assert.expect(3); + assert.expect(6); + + var interval = [ + ["start", "<=", "2016-12-17 23:59:59"], + ["stop", ">=", "2016-12-11 00:00:00"], + ]; + + var domains = [ + interval.concat([["partner_ids", "in", [2,1]]]), + interval.concat([["partner_ids", "in", [1]]]), + interval, + ]; + + var i = 0; var calendar = createView({ View: CalendarView, @@ -1230,6 +1243,13 @@ QUnit.module('Views', { viewOptions: { initialDate: initialDate, }, + mockRPC: function (route, args) { + if (args.method === 'search_read' && args.model === 'event') { + assert.deepEqual(args.kwargs.domain, domains[i]); + i++; + } + return this._super.apply(this, arguments); + }, }); assert.strictEqual(calendar.$('.fc-event').length, 9,