From bcd8081cb4b88b689c84939edf47b67a2f1f91ae Mon Sep 17 00:00:00 2001 From: "Walid HANNICHE (waha)" Date: Fri, 18 Nov 2022 12:12:21 +0000 Subject: [PATCH] [FIX] board: prevent add to dashboard with no actionID Steps to reproduce: - Go to Purchase -> Reporting -> Dashboard - click on the "expand" arrows of the pivot view - favorites - add to dashboard Bug: adding a view with no actionID causes the dashboard to crash on load this [commit] prevents adding a view with no actionID Fix: added a default value of False to add_to_dashboard actionId only display the option to add_to_dashboard for views that have actionId opw-2965036 [commit]:https://github.com/odoo-dev/odoo/commit/7180d948f084d4f68d1660cb884c95aaf41288fa closes odoo/odoo#106093 X-original-commit: ff926a5b4390b38db339440c18dd2d5380df7d61 Signed-off-by: Aaron Bohy (aab) Signed-off-by: Walid Hanniche (waha) --- .../static/src/add_to_board/add_to_board.js | 6 +-- .../static/tests/add_to_dashboard_tests.js | 38 ++++++++++++++++--- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/addons/board/static/src/add_to_board/add_to_board.js b/addons/board/static/src/add_to_board/add_to_board.js index 2d4cf715199..4602e156c21 100644 --- a/addons/board/static/src/add_to_board/add_to_board.js +++ b/addons/board/static/src/add_to_board/add_to_board.js @@ -52,7 +52,7 @@ export class AddToBoard extends Component { }; const result = await this.rpc("/board/add_to_dashboard", { - action_id: this.env.config.actionId, + action_id: this.env.config.actionId || false, context_to_save: contextToSave, domain, name: this.state.name, @@ -93,10 +93,10 @@ export class AddToBoard extends Component { AddToBoard.template = "board.AddToBoard"; AddToBoard.components = { Dropdown }; -const addToBoardItem = { +export const addToBoardItem = { Component: AddToBoard, groupNumber: 4, - isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window", + isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window" && config.actionId, }; favoriteMenuRegistry.add("add-to-board", addToBoardItem, { sequence: 10 }); diff --git a/addons/board/static/tests/add_to_dashboard_tests.js b/addons/board/static/tests/add_to_dashboard_tests.js index 6167d7227d0..c4dc1f907df 100644 --- a/addons/board/static/tests/add_to_dashboard_tests.js +++ b/addons/board/static/tests/add_to_dashboard_tests.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import { AddToBoard } from "@board/add_to_board/add_to_board"; +import { addToBoardItem } from "@board/add_to_board/add_to_board"; import { click, getFixture, @@ -84,11 +84,7 @@ QUnit.module("Board", (hooks) => { LegacyFavoriteMenu.registry.add("add-to-board-menu", LegacyAddToBoard, 10); favoriteMenuRegistry.add( "add-to-board", - { - Component: AddToBoard, - groupNumber: 4, - isDisplayed: ({ config }) => config.actionType === "ir.actions.act_window", - }, + addToBoardItem, { sequence: 10 } ); serverData = { models }; @@ -281,6 +277,36 @@ QUnit.module("Board", (hooks) => { await testUtils.dom.click(target.querySelector(".o_add_to_board .dropdown-menu button")); }); + QUnit.test("add to dashboard with no action id", async function (assert) { + assert.expect(2); + + serverData.views = { + "partner,false,pivot": '', + "partner,false,search": '', + }; + registry.category("services").add("user", makeFakeUserService()); + const webClient = await createWebClient({ serverData }); + + await doAction(webClient, { + id: false, + res_model: "partner", + type: "ir.actions.act_window", + views: [[false, "pivot"]], + }); + await toggleFavoriteMenu(target); + assert.containsNone(target, ".o_add_to_board"); + + // Sanity check + await doAction(webClient, { + id: 1, + res_model: "partner", + type: "ir.actions.act_window", + views: [[false, "pivot"]], + }); + await toggleFavoriteMenu(target); + assert.containsOnce(target, ".o_add_to_board"); + }); + QUnit.test( "correctly save the time ranges of a reporting view in comparison mode", async function (assert) {