diff --git a/addons/web/static/src/model/relational_model/relational_model.js b/addons/web/static/src/model/relational_model/relational_model.js index 9ae600defa0..90b1817e185 100644 --- a/addons/web/static/src/model/relational_model/relational_model.js +++ b/addons/web/static/src/model/relational_model/relational_model.js @@ -510,8 +510,10 @@ export class RelationalModel extends Model { * @param {Object} [params={}] * @returns Promise */ - _loadNewRecord(config, params = {}) { - return this._onchange(config, params); + async _loadNewRecord(config, params = {}) { + const record = await this._onchange(config, params); + applyProperties([record], config.activeFields, config.fields); + return record; } /** diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 2c3c7cf4eea..b0106a15742 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -54,6 +54,7 @@ const DEFAULT_FIELD_VALUES = { text: false, selection: false, reference: false, + properties: [], }; // ----------------------------------------------------------------------------- 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 591338b1f6c..35250f9dde2 100644 --- a/addons/web/static/tests/views/calendar/calendar_view_tests.js +++ b/addons/web/static/tests/views/calendar/calendar_view_tests.js @@ -4788,7 +4788,7 @@ QUnit.module("Views", ({ beforeEach }) => { ); }); - QUnit.test(`calendar render properties`, async (assert) => { + QUnit.test(`calendar render properties in popover`, async (assert) => { serverData.models.event.fields.properties = { string: "Properties", type: "properties", @@ -4831,7 +4831,7 @@ QUnit.module("Views", ({ beforeEach }) => { resModel: "event", serverData, arch: ` - + @@ -4852,6 +4852,51 @@ QUnit.module("Views", ({ beforeEach }) => { ); }); + QUnit.test(`calendar create record with default properties`, async (assert) => { + serverData.models.event.fields.properties = { + string: "Properties", + type: "properties", + definition_record: "event_type_id", + definition_record_field: "definitions", + default: [{ name: "event_prop", string: "Hello", type: "char" }], + }; + serverData.models.event_type.fields.definitions = { + string: "Definitions", + type: "properties_definition", + }; + + serverData.views["event,false,form"] = ` +
+ + + + + +
+ `; + + await makeView({ + type: "calendar", + resModel: "event", + serverData, + arch: ` + + + + + `, + async mockRPC(route, args) { + if (args.method === "check_access_rights") { + return true; + } + }, + }); + + await selectTimeRange(target, "2016-12-15 06:00:00", "2016-12-15 08:00:00"); + assert.containsOnce(target, ".modal"); + assert.strictEqual(target.querySelector(".modal [name='properties']").textContent, "Hello"); + }); + QUnit.module("CalendarView - DatePicker", ({ beforeEach }) => { beforeEach(() => { target = getFixture();