from odoo import models, api class IrUiMenu(models.Model): _inherit = 'ir.ui.menu' @api.model def load_menus(self, debug): """ Override standard menu loading to hide unwanted root menus. """ menus = super(IrUiMenu, self).load_menus(debug) user = self.env.user is_admin = user.has_group('base.group_system') db_name = self.env.cr.dbname or '' is_saas_master = ('Dine360Restaurants' in db_name) or ( 'saas.restaurant' in self.env and bool(self.env['saas.restaurant'].sudo().search_count([])) ) if is_saas_master: allowed_menus = ['Dine360 SaaS', 'Apps', 'Settings'] else: allowed_menus = ['Online Orders', 'Website', 'Table Reservations', 'Uber Integration', 'Apps', 'Settings'] if 'root' in menus and 'children' in menus['root']: new_children = [] for child_id in menus['root']['children']: child_menu = menus.get(child_id) if not child_menu: continue name = child_menu.get('name') if is_saas_master: if name in allowed_menus: if name in ['Apps', 'Settings'] and not is_admin: continue new_children.append(child_id) else: # Allow matching menus for tenant restaurant databases if name in allowed_menus or name == 'Table Reservation': if name in ['Apps', 'Settings'] and not is_admin: continue new_children.append(child_id) menus['root']['children'] = new_children return menus