diff --git a/addons/web/static/src/views/calendar/calendar_model.js b/addons/web/static/src/views/calendar/calendar_model.js index 17a7f08f6d3..891cbdc1aaa 100644 --- a/addons/web/static/src/views/calendar/calendar_model.js +++ b/addons/web/static/src/views/calendar/calendar_model.js @@ -45,6 +45,10 @@ export class CalendarModel extends Model { ? deserializeDateTime(params.context.initial_date) : luxon.DateTime.local(); } + // Prevent picking a scale that is not supported by the view + if (!this.meta.scales.includes(this.meta.scale)) { + this.meta.scale = this.meta.scales[0]; + } const data = { ...this.data }; await this.keepLast.add(this.updateData(data)); this.data = data; diff --git a/addons/web/static/tests/views/calendar/calendar_view_tests.js b/addons/web/static/tests/views/calendar/calendar_view_tests.js index 042d7cac229..4085b374af4 100644 --- a/addons/web/static/tests/views/calendar/calendar_view_tests.js +++ b/addons/web/static/tests/views/calendar/calendar_view_tests.js @@ -3934,4 +3934,21 @@ QUnit.module("Views", ({ beforeEach }) => { // test would fail here if we don't ignore readonly modifier assert.containsOnce(target, ".o_cw_popover"); }); + + QUnit.test("can not select invalid scale from datepicker", async (assert) => { + await makeView({ + type: "calendar", + resModel: "event", + serverData, + arch: ` + + + + `, + }); + + await click(target, ".ui-datepicker-today"); + // test would fail here if we went to week mode + assert.containsOnce(target, ".fc-dayGridMonth-view"); + }); });