Harden corporate website home menu cleanup

This commit is contained in:
metatroncubeswdev 2026-08-31 15:09:48 -04:00
parent 1b34c054b0
commit 01813d5156

View File

@ -41,10 +41,20 @@ class McsCorporateWebsiteSetup(models.AbstractModel):
for menu in home_menus: for menu in home_menus:
by_parent.setdefault(menu.parent_id.id or 0, self.env["website.menu"]) by_parent.setdefault(menu.parent_id.id or 0, self.env["website.menu"])
by_parent[menu.parent_id.id or 0] |= menu by_parent[menu.parent_id.id or 0] |= menu
duplicate_ids = []
for menus in by_parent.values(): for menus in by_parent.values():
duplicates = menus.sorted(lambda item: item.id)[1:] duplicates = menus.sorted(lambda item: item.id)[1:]
if duplicates: duplicate_ids.extend(duplicates.ids)
duplicates.unlink()
own_home = self.env.ref("mcs_corporate_website.menu_home", raise_if_not_found=False) own_home = self.env.ref("mcs_corporate_website.menu_home", raise_if_not_found=False)
if own_home: if own_home and own_home.id not in duplicate_ids:
own_home.unlink() duplicate_ids.append(own_home.id)
if not duplicate_ids:
return
self.env.cr.execute(
"DELETE FROM ir_model_data WHERE model = %s AND res_id = ANY(%s)",
["website.menu", duplicate_ids],
)
self.env.cr.execute(
"DELETE FROM website_menu WHERE id = ANY(%s)",
[duplicate_ids],
)