diff --git a/addons/website/models/website_page.py b/addons/website/models/website_page.py index d5e5eb67e4c..f9b4a47b104 100644 --- a/addons/website/models/website_page.py +++ b/addons/website/models/website_page.py @@ -183,7 +183,7 @@ class Page(models.Model): page_url_normalized = {'homepage_url': page.url} website._handle_homepage_url(page_url_normalized) if website.homepage_url == page_url_normalized['homepage_url']: - website.homepage_url = vals['url'] + website.homepage_url = url vals['url'] = url # If name has changed, check for key uniqueness diff --git a/addons/website/tests/test_page.py b/addons/website/tests/test_page.py index 9d24d93946d..35250b4d990 100644 --- a/addons/website/tests/test_page.py +++ b/addons/website/tests/test_page.py @@ -308,6 +308,7 @@ class WithContext(HttpCase): def test_website_homepage_url_change(self): website = self.env['website'].browse([1]) + self.assertFalse(website.homepage_url) test_page = self.env['website.page'].create({ 'name': 'HomepageUrlTest', @@ -336,6 +337,7 @@ class WithContext(HttpCase): test_page.url = '/url-changed' # .. the `homepage_url` should be changed to follow the new page URL + self.assertEqual(website.homepage_url, '/url-changed') r = self.url_open('/') self.assertEqual(r.status_code, 200) self.assertEqual( @@ -344,6 +346,17 @@ class WithContext(HttpCase): menu different from '/', see homepage controller.""") self.assertIn(b"HomepageUrlTest", r.content) + # Side test: ensure `slugify` and `get_unique_path` changes are + # correctly replicated in the synced website homepage_url + with MockRequest(self.env, website=website): + # `/url-changed_two` will become `/url-changed-two` + test_page.url = '/url-changed_two' + self.assertEqual(website.homepage_url, '/url-changed-two') + r = self.url_open('/') + self.assertEqual(r.status_code, 200) + self.assertEqual(r.url, home_url_full) + self.assertIn(b"HomepageUrlTest", r.content) + def test_06_homepage_url(self): # Setup website = self.env['website'].browse([1])