From 8c5ec851fcc42887d5cf4f2d17ba29136f33f5b7 Mon Sep 17 00:00:00 2001 From: Nans Lefebvre Date: Tue, 8 Jan 2019 13:43:36 +0000 Subject: [PATCH] [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 --- addons/website/models/website.py | 7 +++++-- 1 file 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):