From 97c6a79fba35a7fe4a42f9f19caf263d7ec3b458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 8 Jul 2020 11:00:15 +0000 Subject: [PATCH 1/2] [FIX] website_event: allow event users to update menu entries PURPOSE Prepare Event Online support by providing fixes and preparatory cleaning commits. SPECIFICATIONS Fix issue when updating menu organization fields on an event. Indeed it implies some website menu and pages creation or unlink. Currently it crahes as only website people can do it. Being an event user or manager should be sufficient to update those menus LINKS Task ID-2300907 (Event Bugprovements 2) PR #54621 X-original-commit: 264ebb6af3e991030a2f803281b90267502a0f84 --- addons/website_event/models/event_event.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/website_event/models/event_event.py b/addons/website_event/models/event_event.py index dd7fa17d63b..d901c8c92e4 100644 --- a/addons/website_event/models/event_event.py +++ b/addons/website_event/models/event_event.py @@ -97,7 +97,7 @@ class Event(models.Model): if event.menu_id and not event.website_menu: event.menu_id.unlink() elif event.website_menu and not event.menu_id: - root_menu = self.env['website.menu'].create({'name': event.name, 'website_id': event.website_id.id}) + root_menu = self.env['website.menu'].sudo().create({'name': event.name, 'website_id': event.website_id.id}) event.menu_id = root_menu for sequence, (name, url, xml_id) in enumerate(event._get_menu_entries()): event._create_menu(sequence, name, url, xml_id) @@ -105,9 +105,9 @@ class Event(models.Model): def _create_menu(self, sequence, name, url, xml_id): if not url: self.env['ir.ui.view'].search([('name', '=', name + ' ' + self.name)]).unlink() - newpath = self.env['website'].new_page(name + ' ' + self.name, template=xml_id, ispage=False)['url'] + newpath = self.env['website'].sudo().new_page(name + ' ' + self.name, template=xml_id, ispage=False)['url'] url = "/event/" + slug(self) + "/page/" + newpath[1:] - menu = self.env['website.menu'].create({ + menu = self.env['website.menu'].sudo().create({ 'name': name, 'url': url, 'parent_id': self.menu_id.id, From f7e7a273cc6fbb67dd62c6d9bbfdf8bc687cbbce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 15 Jul 2020 17:24:59 +0000 Subject: [PATCH 2/2] [IMP] website_sale: make visitor test independent from demo PURPOSE Prepare Event Online support by providing fixes and preparatory cleaning commits. SPECIFICATIONS Make visitor tests in website_sale independent from existing visitors and specially about demo data. Adding demo data makes tests crash which is not the expected assert of visitor tests. LINKS Task ID-2300907 (Event Bugprovements 2) PR #54621 X-original-commit: 971f26a14d5cbafd65f4370eac14f4cd762b5b44 --- .../tests/test_website_sale_visitor.py | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/addons/website_sale/tests/test_website_sale_visitor.py b/addons/website_sale/tests/test_website_sale_visitor.py index c18e7ae4843..7f24f33d618 100644 --- a/addons/website_sale/tests/test_website_sale_visitor.py +++ b/addons/website_sale/tests/test_website_sale_visitor.py @@ -14,11 +14,8 @@ class WebsiteSaleVisitorTests(TransactionCase): def test_create_visitor_on_tracked_product(self): self.WebsiteSaleController = WebsiteSale() - Visitor = self.env['website.visitor'] - Track = self.env['website.track'] - - self.assertEqual(len(Visitor.search([])), 0, "No visitor at the moment") - self.assertEqual(len(Track.search([])), 0, "No track at the moment") + existing_visitors = self.env['website.visitor'].search([]) + existing_tracks = self.env['website.track'].search([]) product = self.env['product.product'].create({ 'name': 'Storage Box', @@ -28,14 +25,18 @@ class WebsiteSaleVisitorTests(TransactionCase): with MockRequest(self.env, website=self.website): self.cookies = self.WebsiteSaleController.products_recently_viewed_update(product.id) - self.assertEqual(len(Visitor.search([])), 1, "A visitor should be created after visiting a tracked product") - self.assertEqual(len(Track.search([])), 1, "A track should be created after visiting a tracked product") + new_visitors = self.env['website.visitor'].search([('id', 'not in', existing_visitors.ids)]) + new_tracks = self.env['website.track'].search([('id', 'not in', existing_tracks.ids)]) + self.assertEqual(len(new_visitors), 1, "A visitor should be created after visiting a tracked product") + self.assertEqual(len(new_tracks), 1, "A track should be created after visiting a tracked product") with MockRequest(self.env, website=self.website, cookies=self.cookies): self.WebsiteSaleController.products_recently_viewed_update(product.id) - self.assertEqual(len(Visitor.search([])), 1, "No visitor should be created after visiting another tracked product") - self.assertEqual(len(Track.search([])), 1, "No track should be created after visiting the same tracked product before 30 min") + new_visitors = self.env['website.visitor'].search([('id', 'not in', existing_visitors.ids)]) + new_tracks = self.env['website.track'].search([('id', 'not in', existing_tracks.ids)]) + self.assertEqual(len(new_visitors), 1, "No visitor should be created after visiting another tracked product") + self.assertEqual(len(new_tracks), 1, "No track should be created after visiting the same tracked product before 30 min") product = self.env['product.product'].create({ 'name': 'Large Cabinet', @@ -46,5 +47,7 @@ class WebsiteSaleVisitorTests(TransactionCase): with MockRequest(self.env, website=self.website, cookies=self.cookies): self.WebsiteSaleController.products_recently_viewed_update(product.id) - self.assertEqual(len(Visitor.search([])), 1, "No visitor should be created after visiting another tracked product") - self.assertEqual(len(Track.search([])), 2, "A track should be created after visiting another tracked product") + new_visitors = self.env['website.visitor'].search([('id', 'not in', existing_visitors.ids)]) + new_tracks = self.env['website.track'].search([('id', 'not in', existing_tracks.ids)]) + self.assertEqual(len(new_visitors), 1, "No visitor should be created after visiting another tracked product") + self.assertEqual(len(new_tracks), 2, "A track should be created after visiting another tracked product")