diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 5105aebc474a796a5d9dc16113fa397c9ca7317a..5609f8742aa3c3e6e090cb5ffe2c4a9a640f27c1 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -537,13 +537,23 @@ class Page(models.Model): date_publish = fields.Datetime('Publishing Date') # This is needed to be able to display if page is a menu in /website/pages menu_ids = fields.One2many('website.menu', 'page_id', 'Related Menus') - is_homepage = fields.Boolean(compute='_compute_homepage', string='Homepage') + is_homepage = fields.Boolean(compute='_compute_homepage', inverse='_set_homepage', string='Homepage') is_visible = fields.Boolean(compute='_compute_visible', string='Is Visible') @api.one def _compute_homepage(self): self.is_homepage = self == self.env['website'].get_current_website().homepage_id + @api.one + def _set_homepage(self): + website = self.env['website'].get_current_website() + if self.is_homepage: + if website.homepage_id != self: + website.write({'homepage_id': self.id}) + else: + if website.homepage_id == self: + website.write({'homepage_id': None}) + @api.one def _compute_visible(self): self.is_visible = self.website_published and (not self.date_publish or self.date_publish < fields.Datetime.now()) @@ -558,14 +568,6 @@ class Page(models.Model): def save_page_info(self, website_id, data): website = self.env['website'].browse(website_id) - if data['is_homepage'] and website.homepage_id.id != int(data['id']): - # If page is set as the new homepage, set it on website (only page can be set as homepage) - website.write({'homepage_id': data['id']}) - else: - if not data['is_homepage'] and website.homepage_id.id == int(data['id']): - # If the page is not a homepage, check if it was the homepage - website.write({'homepage_id': None}) - #If URL has been edited, slug it page = self.browse(int(data['id'])) original_url = page.url @@ -597,7 +599,8 @@ class Page(models.Model): 'url': url, 'website_published': data['website_published'], 'website_indexed': data['website_indexed'], - 'date_publish': data['date_publish'] or None + 'date_publish': data['date_publish'] or None, + 'is_homepage': data['is_homepage'], }) # Create redirect if needed