diff options
| author | Romain Derie <rde@odoo.com> | 2019-10-16 15:45:01 +0000 |
|---|---|---|
| committer | fw-bot <otis@odoo.com> | 2019-10-21 23:21:45 +0000 |
| commit | 7cce59a3c3bf151d7d69604400f52a2a5cc84694 (patch) | |
| tree | 5912cb381f6efebd2dbf1ab1e6df14d2104f510f | |
| parent | ed5b6c96959e73119ba0915ed4ba41fb5eb337a0 (diff) | |
[FIX] website: prevent traceback if xml homepage view has no page
The XML file homepage view record is not supposed to be deleted as it is used
to bootstrap newly created website.
If that view is deleted, everything's fine. But if that view's page is not
found (m2o link broken somehow), then the code would crash.
This would only appear if the user is playing in the backend in technical but
it seems to happen more than it should.
This commit will prevent the code to crash in such a case.
Step to reproduce:
1. Go to settings > technical > views (debug)
2. Find the xml homepage view (with xml_id)
3. Go to its website.page and break the m2o view_id
4. Try to create a new website, it will crash
opw-2081894
closes odoo/odoo#39149
X-original-commit: 1d4dd200c664b99dbdb3e65e3950be1cb5e79a0a
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
| -rw-r--r-- | addons/website/models/website.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 1fddda51349..12ad1460b01 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -188,6 +188,7 @@ class Website(models.Model): # Page Management # ---------------------------------------------------------- def _bootstrap_homepage(self): + Page = self.env['website.page'] standard_homepage = self.env.ref('website.homepage', raise_if_not_found=False) if not standard_homepage: return @@ -200,10 +201,19 @@ class Website(models.Model): </t>''' % (self.id) standard_homepage.with_context(website_id=self.id).arch_db = new_homepage_view - self.homepage_id = self.env['website.page'].search([('website_id', '=', self.id), - ('key', '=', standard_homepage.key)]) + homepage_page = Page.search([ + ('website_id', '=', self.id), + ('key', '=', standard_homepage.key), + ]) + if not homepage_page: + homepage_page = Page.create({ + 'website_published': True, + 'url': '/', + 'view_id': self.with_context(website_id=self.id).viewref('website.homepage').id, + }) # prevent /-1 as homepage URL - self.homepage_id.url = '/' + homepage_page.url = '/' + self.homepage_id = homepage_page # Bootstrap default menu hierarchy, create a new minimalist one if no default default_menu = self.env.ref('website.main_menu') |
