diff options
| author | Nans Lefebvre <len@odoo.com> | 2019-01-08 13:43:36 +0000 |
|---|---|---|
| committer | Nans Lefebvre <len@odoo.com> | 2019-01-09 10:29:52 +0000 |
| commit | 8c5ec851fcc42887d5cf4f2d17ba29136f33f5b7 (patch) | |
| tree | 25823ff576d886892891f5cd9776300826d12246 | |
| parent | f24d5dd2b6c2db1726f41f36fb748f93de76dbdf (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.py | 7 |
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): |
