diff --git a/addons/web/static/src/views/kanban/kanban_arch_parser.js b/addons/web/static/src/views/kanban/kanban_arch_parser.js index 5bf4b4a1ceb..4219c476baf 100644 --- a/addons/web/static/src/views/kanban/kanban_arch_parser.js +++ b/addons/web/static/src/views/kanban/kanban_arch_parser.js @@ -43,11 +43,9 @@ export class KanbanArchParser extends XMLParser { groupCreate: archParseBoolean(xmlDoc.getAttribute("group_create"), true), groupDelete: archParseBoolean(xmlDoc.getAttribute("group_delete"), true), groupEdit: archParseBoolean(xmlDoc.getAttribute("group_edit"), true), + quickCreate: archParseBoolean(xmlDoc.getAttribute("quick_create"), true), }; - const onCreate = - activeActions.create && - archParseBoolean(xmlDoc.getAttribute("quick_create"), true) && - xmlDoc.getAttribute("on_create"); + const onCreate = xmlDoc.getAttribute("on_create"); const quickCreateView = xmlDoc.getAttribute("quick_create_view"); const tooltipInfo = {}; let handleField = null; diff --git a/addons/web/static/src/views/kanban/kanban_controller.js b/addons/web/static/src/views/kanban/kanban_controller.js index b6be1edfca3..6cda6c9f1bd 100644 --- a/addons/web/static/src/views/kanban/kanban_controller.js +++ b/addons/web/static/src/views/kanban/kanban_controller.js @@ -84,9 +84,9 @@ export class KanbanController extends Component { } async createRecord(group) { - const { onCreate } = this.props.archInfo; + const { activeActions, onCreate } = this.props.archInfo; const { root } = this.model; - if (onCreate === "quick_create" && root.canQuickCreate()) { + if (activeActions.quickCreate && onCreate === "quick_create" && root.canQuickCreate()) { await root.quickCreate(group); } else if (onCreate && onCreate !== "quick_create") { const options = { diff --git a/addons/web/static/src/views/kanban/kanban_renderer.js b/addons/web/static/src/views/kanban/kanban_renderer.js index 03a051f7ff6..42d89ee2e25 100644 --- a/addons/web/static/src/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/views/kanban/kanban_renderer.js @@ -365,6 +365,10 @@ export class KanbanRenderer extends Component { return this.props.archInfo.activeActions.edit; } + canQuickCreate() { + return this.props.archInfo.activeActions.quickCreate && this.props.list.canQuickCreate(); + } + // ------------------------------------------------------------------------ // Edition methods // ------------------------------------------------------------------------ diff --git a/addons/web/static/src/views/kanban/kanban_renderer.xml b/addons/web/static/src/views/kanban/kanban_renderer.xml index 8dce78bde96..6724ff12ba9 100644 --- a/addons/web/static/src/views/kanban/kanban_renderer.xml +++ b/addons/web/static/src/views/kanban/kanban_renderer.xml @@ -47,7 +47,7 @@ - diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 580c9b5d89c..ec976056aeb 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -1194,6 +1194,33 @@ QUnit.module("Views", (hooks) => { ]); }); + QUnit.test("grouped kanban with quick_create attrs set to false", async (assert) => { + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + + + +
+
+
+
`, + groupBy: ["product_id"], + createRecord: () => assert.step("create record"), + }); + + assert.containsN(target, ".o_kanban_group", 2); + assert.containsNone(target, ".o_kanban_quick_add"); + + await click(target.querySelector(".o-kanban-button-new")); + + assert.containsNone(target, ".o_kanban_quick_create"); + assert.verifySteps(["create record"]); + }); + QUnit.test("create in grouped on m2o", async (assert) => { await makeView({ type: "kanban",