diff --git a/addons/web/static/src/js/views/calendar/calendar_renderer.js b/addons/web/static/src/js/views/calendar/calendar_renderer.js index 44d2a81f773..9bc9aa0cb85 100644 --- a/addons/web/static/src/js/views/calendar/calendar_renderer.js +++ b/addons/web/static/src/js/views/calendar/calendar_renderer.js @@ -338,6 +338,7 @@ return AbstractRenderer.extend({ r_end: fc4Event.extendedProps.r_end && moment(fc4Event.extendedProps.r_end).utcOffset(0, true), record: fc4Event.extendedProps.record, attendees: fc4Event.extendedProps.attendees, + disableQuickCreate: fc4Event.extendedProps.disableQuickCreate, }); } } diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js index 308ac98fde8..46d6019328f 100644 --- a/addons/web/static/tests/views/calendar_tests.js +++ b/addons/web/static/tests/views/calendar_tests.js @@ -3938,6 +3938,56 @@ QUnit.module('Views', { calendar.destroy(); }); + + QUnit.test('calendar: disableQuickCreate in data event', async function (assert) { + assert.expect(3); + + testUtils.mock.patch(CalendarRenderer, { + _preOpenCreate: function (data) { + data = Object.assign({}, data, { + extendedProps: {disableQuickCreate: true}, + }); + return this._super.call(this, data); + }, + }); + + let calendar = await testUtils.createCalendarView({ + View: CalendarView, + model: 'event', + data: this.data, + arch: ``, + viewOptions: { + initialDate: initialDate, + }, + intercepts: { + do_action(ev) { + assert.step('do_action'); + assert.deepEqual(ev.data.action.context, { + default_start: "2016-12-12 06:30:00", + default_stop: "2016-12-12 11:00:00", + }, "should send the correct data to create events"); + }, + }, + }, {positionalClicks: true}); + + // Create event + var $initCell = calendar.$('.fc-time-grid .fc-minor[data-time="06:30:00"] .fc-widget-content:last-child'); + var $endCell = calendar.$('.fc-time-grid .fc-minor[data-time="10:30:00"] .fc-widget-content:last-child'); + + var left = $initCell.offset().left; + var top = $initCell.offset().top; + testUtils.dom.triggerPositionalMouseEvent(left, top, "mousedown"); + top = $endCell.offset().top; + testUtils.dom.triggerPositionalMouseEvent(left, top, "mousemove"); + testUtils.dom.triggerPositionalMouseEvent(left, top, "mouseup"); + await testUtils.nextTick(); + + assert.verifySteps(['do_action']); + + calendar.destroy(); + + testUtils.mock.unpatch(CalendarRenderer); + }); }); });