diff --git a/addons/web/static/src/js/views/calendar/calendar_popover.js b/addons/web/static/src/js/views/calendar/calendar_popover.js
index 3e6c7b8a8ed..79448962e28 100644
--- a/addons/web/static/src/js/views/calendar/calendar_popover.js
+++ b/addons/web/static/src/js/views/calendar/calendar_popover.js
@@ -193,6 +193,9 @@ var CalendarPopover = Widget.extend(WidgetAdapterMixin, StandaloneFieldManagerMi
FieldClass = fieldRegistry.getAny([field.widget, field.type]);
fieldWidget = new FieldClass(self, field.name, record, self.displayFields[field.name]);
}
+ if (fieldWidget.attrs && !_.isObject(fieldWidget.attrs.modifiers)) {
+ fieldWidget.attrs.modifiers = fieldWidget.attrs.modifiers ? JSON.parse(fieldWidget.attrs.modifiers) : {};
+ }
self._registerWidget(recordID, field.name, fieldWidget);
var $field = $('
', {class: 'list-group-item flex-shrink-0 d-flex flex-wrap'});
diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js
index 725fcc9cb53..e47f9dd9518 100644
--- a/addons/web/static/tests/views/calendar_tests.js
+++ b/addons/web/static/tests/views/calendar_tests.js
@@ -915,6 +915,40 @@ QUnit.module('Views', {
calendar.destroy();
});
+ QUnit.test('render popover with modifiers', async function (assert) {
+ assert.expect(3);
+
+ this.data.event.fields.priority = {string: "Priority", type: "selection", selection: [['0', 'Normal'], ['1', 'Important']],};
+
+ var calendar = await createCalendarView({
+ View: CalendarView,
+ model: 'event',
+ data: this.data,
+ arch:
+ ''+
+ ''+
+ '',
+ archs: archs,
+ viewOptions: {
+ initialDate: initialDate,
+ },
+ });
+
+ await testUtils.dom.click($('.fc-event:contains(event 4)'));
+
+ assert.containsOnce(calendar, '.o_cw_popover', "should open a popover clicking on event");
+ assert.containsOnce(calendar, '.o_cw_popover .o_priority span.o_priority_star', "priority field should not be editable");
+
+ await testUtils.dom.click($('.o_cw_popover .o_cw_popover_close'));
+ assert.containsNone(calendar, '.o_cw_popover', "should close a popover");
+
+ calendar.destroy();
+ });
+
QUnit.test('render popover with widget which has specialData attribute', async function (assert) {
assert.expect(3);