From 4e006fb8310a17e6c9d3d5bb146a39ad01b915b1 Mon Sep 17 00:00:00 2001 From: Arnaud Joset Date: Mon, 7 Jun 2021 09:02:08 +0000 Subject: [PATCH] [FIX] web: prevent traceback during calendar popover processing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit, a traceback would occurs in sale_management calendar view when the user would try to display the popover of a sale_order. ```js basic_model.js:2399 Uncaught (in promise) Error: for modifier "readonly": Unknown field state in domain at Class._evalModifiers (basic_model.js:2399) at calendar_popover.js:203 at Function._.each._.forEach (underscore.js:145) at calendar_popover.js:180 at async Promise.all (index 1) _evalModifiers @ basic_model.js:2399 (anonymous) @ calendar_popover.js:203 _.each._.forEach @ underscore.js:145 (anonymous) @ calendar_popover.js:180 Promise.then (async) _renderEventPopover @ calendar_renderer.js:861 eventClick @ calendar_renderer.js:416 Calendar.publiclyTrigger @ main.js:6981 EventClicking._this.handleSegClick @ main.js:6462 realHandler @ main.js:385 ``` It would happen because the domain of the partner_id is ["state", "not in", ['draft', 'sent']] but the state field is invisible="1" in the view. state was absent during of the evalContext in the _evalModifiers function. closes odoo/odoo#72617 Taskid: 2524993 X-original-commit: 0d636c0f8dbcfb4b7adda26c0edc02a12b0c7e44 Signed-off-by: Michaƫl Mattiello Signed-off-by: Arnaud Joset --- .../src/legacy/js/views/calendar/calendar_popover.js | 6 ++++-- .../src/legacy/js/views/calendar/calendar_renderer.js | 2 ++ .../static/src/legacy/js/views/calendar/calendar_view.js | 3 +++ addons/web/static/tests/legacy/views/calendar_tests.js | 9 +++++++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/legacy/js/views/calendar/calendar_popover.js b/addons/web/static/src/legacy/js/views/calendar/calendar_popover.js index 12d6c56e275..7f54bb5144d 100644 --- a/addons/web/static/src/legacy/js/views/calendar/calendar_popover.js +++ b/addons/web/static/src/legacy/js/views/calendar/calendar_popover.js @@ -31,6 +31,7 @@ var CalendarPopover = Widget.extend(WidgetAdapterMixin, StandaloneFieldManagerMi this.event = eventInfo.event; this.modelName = eventInfo.modelName; this._canDelete = eventInfo.canDelete; + this.popoverFields = eventInfo.popoverFields; }, /** * @override @@ -126,7 +127,7 @@ var CalendarPopover = Widget.extend(WidgetAdapterMixin, StandaloneFieldManagerMi var self = this; var fieldsToGenerate = []; const fieldInformation = {}; - var fields = _.keys(this.displayFields); + var fields = _.keys(this.popoverFields); for (var i=0; i'+ ''+ + ''+ + '