summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNans Lefebvre <len@odoo.com>2019-01-08 13:43:36 +0000
committerNans Lefebvre <len@odoo.com>2019-01-09 10:29:52 +0000
commit8c5ec851fcc42887d5cf4f2d17ba29136f33f5b7 (patch)
tree25823ff576d886892891f5cd9776300826d12246
parentf24d5dd2b6c2db1726f41f36fb748f93de76dbdf (diff)
[FIX] website: fix menus unlinking
Fine-tuning of commit b48d2b6b5e3aa0f74. The call to unlink inside the unlink can recurse infinitely in case there is a copy of a menu. We replace that direct call by an accumulator so no recursion occurs. opw 1922448 closes odoo/odoo#30032
-rw-r--r--addons/website/models/website.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 3bddbe532ed..16b6a597969 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -1152,9 +1152,12 @@ class Menu(models.Model):
@api.multi
def unlink(self):
default_menu = self.env.ref('website.main_menu', raise_if_not_found=False)
+ menus_to_remove = self
for menu in self.filtered(lambda m: default_menu and m.parent_id.id == default_menu.id):
- self.env['website.menu'].search([('url', '=', menu.url), ('id', '!=', menu.id)]).unlink()
- return super(Menu, self).unlink()
+ menus_to_remove |= self.env['website.menu'].search([('url', '=', menu.url),
+ ('website_id', '!=', False),
+ ('id', '!=', menu.id)])
+ return super(Menu, menus_to_remove).unlink()
@api.one
def _compute_visible(self):