From 2b3cb263bc650e99fb9ba65e7bf835d8626a140c Mon Sep 17 00:00:00 2001 From: "Louis (loco)" Date: Fri, 2 Dec 2022 08:36:55 +0000 Subject: [PATCH] [FIX] website: fix deleting a page from the page manager Steps to reproduce the bug: - Install the "Surveys" application. - Go to the "Website" application. - Go in the page manager ("Site" > "Pages"). - Select a page (typically "Home"). - Try to delete it. - Error of type "'survey.survey' object has no attributes 'name'". The error comes from the fact that records do not necessarily have the attribute called "name". To fix this error, this commit uses "display_name" that is defined in all models. task-3082345 opw-3100483 opw-3111671 X-original-commit: d5aa5d7ebf9cd17a6df054252a1313ec8b85e83e Part-of: odoo/odoo#109329 --- addons/website/models/website.py | 2 +- .../static/tests/tours/page_manager.js | 60 +++++++++++++++++++ addons/website/tests/__init__.py | 1 + addons/website/tests/test_page_manager.py | 10 ++++ 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 addons/website/static/tests/tours/page_manager.js create mode 100644 addons/website/tests/test_page_manager.py diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 6c1bbdae6d1..1e95c7ac37a 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -844,7 +844,7 @@ class Website(models.Model): dependencies.setdefault(model_name, []) dependencies[model_name] += [{ 'field_name': Model.fields_get()[column]['string'], - 'record_name': rec.name, + 'record_name': rec.display_name, 'link': 'website_url' in rec and rec.website_url or f'/web#id={rec.id}&view_type=form&model={model}', 'model_name': model_name, } for rec in dependency_records] diff --git a/addons/website/static/tests/tours/page_manager.js b/addons/website/static/tests/tours/page_manager.js new file mode 100644 index 00000000000..bed629d1f1b --- /dev/null +++ b/addons/website/static/tests/tours/page_manager.js @@ -0,0 +1,60 @@ +/** @odoo-module **/ + +import wTourUtils from 'website.tour_utils'; + +const deleteSelectedPage = [ + { + content: "Click on Action", + trigger: '.o_cp_action_menus button', + }, + { + content: "Click on Delete", + trigger: '.o-dropdown--menu span:contains("Delete")', + }, + { + content: "Click on I am sure about this", + trigger: 'main.modal-body input[type="checkbox"]', + // The loading of the dependencies can take a while and + // sometimes reach the default 10s timeout + timeout: 20000, + }, + { + content: "Click on OK", + trigger: '.modal-content footer button.btn-primary', + } +]; +const homePage = 'tr:contains("Home"):has(td[name="website_id"]:empty)'; + +wTourUtils.registerWebsitePreviewTour('website_page_manager', { + test: true, + url: '/', +}, [ + { + content: "Click on Site", + trigger: 'button.dropdown-toggle[title="Site"]', + }, + { + content: "Click on Pages", + trigger: 'a.dropdown-item[data-menu-xmlid="website.menu_website_pages_list"]', + }, + { + content: "Click on Home Page", + trigger: `.o_list_renderer ${homePage} td.o_list_record_selector input[type="checkbox"]`, + }, + ...deleteSelectedPage, + { + content: "Check that the page has been removed", + trigger: `.o_list_renderer:not(:has(${homePage}))`, + run: () => null, + }, + { + content: "Click on All Pages", + trigger: '.o_list_renderer thead input[type="checkbox"]', + }, + ...deleteSelectedPage, + { + content: "Check that all pages have been removed", + trigger: '.o_list_renderer tbody:not(:has([data-id]))', + run: () => null, + }, +]); diff --git a/addons/website/tests/__init__.py b/addons/website/tests/__init__.py index f7e611e6d90..63fccfa6a24 100644 --- a/addons/website/tests/__init__.py +++ b/addons/website/tests/__init__.py @@ -17,6 +17,7 @@ from . import test_http_endpoint from . import test_lang_url from . import test_menu from . import test_page +from . import test_page_manager from . import test_performance from . import test_qweb from . import test_res_users diff --git a/addons/website/tests/test_page_manager.py b/addons/website/tests/test_page_manager.py new file mode 100644 index 00000000000..14ddb4205b4 --- /dev/null +++ b/addons/website/tests/test_page_manager.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import odoo.tests + +@odoo.tests.common.tagged('post_install', '-at_install') +class TestWebsitePageManager(odoo.tests.HttpCase): + + def test_01_page_manager(self): + self.start_tour(self.env['website'].get_client_action_url('/'), 'website_page_manager', login="admin")