diff options
| author | Géry Debongnie <ged@odoo.com> | 2018-05-28 16:32:33 +0200 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2018-05-29 09:34:55 +0200 |
| commit | 20454038d08913404b5a039ef06182227052d2da (patch) | |
| tree | 6013068bd887cbe035d9ba912262628ad3438eb2 /addons | |
| parent | 59636caebae77a527b1e62f85b6a741d4ef029d9 (diff) | |
[IMP] web: small optimization 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.
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/web/static/src/js/views/calendar/calendar_model.js | 4 | ||||
| -rw-r--r-- | addons/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 240beb9f1dc..63a35171a30 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -373,7 +373,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 f24039f2d8d..f1356558a23 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, |
