From 146495a2e6db4fee97ca87d5a5d04f86845c22d7 Mon Sep 17 00:00:00 2001 From: Alaguraj0361 Date: Wed, 4 Mar 2026 12:57:41 +0530 Subject: [PATCH] fix: website editor iframe blocked by dashboard controller, branding phone field, menu missing name --- addons/Dine360_Chennora/__manifest__.py | 14 +++++ addons/dine360_dashboard/controllers/main.py | 55 ++++++++++++++----- .../dine360_dashboard/data/branding_data.xml | 6 +- addons/dine360_recipe/__manifest__.py | 2 +- .../views/pos_order_views.xml | 3 + 5 files changed, 60 insertions(+), 20 deletions(-) diff --git a/addons/Dine360_Chennora/__manifest__.py b/addons/Dine360_Chennora/__manifest__.py index e3a6659..6d13734 100644 --- a/addons/Dine360_Chennora/__manifest__.py +++ b/addons/Dine360_Chennora/__manifest__.py @@ -11,6 +11,20 @@ 'dine360_theme_chennora', 'dine360_kds', 'dine360_reservation', + 'dine360_uber', + 'dine360_recipe', + 'mail', + 'calendar', + 'contacts', + 'crm', + 'sale_management', + 'board', + 'point_of_sale', + 'account', + 'website', + 'purchase', + 'stock', + 'hr', ], 'uninstall_hook': 'uninstall_hook', 'data': [ diff --git a/addons/dine360_dashboard/controllers/main.py b/addons/dine360_dashboard/controllers/main.py index 56c3cf9..ef4bf51 100644 --- a/addons/dine360_dashboard/controllers/main.py +++ b/addons/dine360_dashboard/controllers/main.py @@ -15,50 +15,75 @@ from odoo.addons.website.controllers.main import Website class ImageHome(Website): @http.route('/', type='http', auth='public', website=True, sitemap=True) def index(self, **kwargs): + # ----------------------------------------------------------- + # WEBSITE EDITOR FIX + # When Odoo's Website editor loads the site, it opens it in an + # iframe. We must NOT intercept that request with our backend + # dashboard; instead let the real website homepage render so the + # editor can attach to it. + # + # Detection methods (any one is enough): + # 1. Sec-Fetch-Dest == 'iframe' → browser signals iframe load + # 2. enable_editor param present → explicit editor activation + # 3. ?debug= in query string → editor dev mode coming from /web + # ----------------------------------------------------------- + fetch_dest = request.httprequest.headers.get('Sec-Fetch-Dest', '') + is_iframe = fetch_dest == 'iframe' + is_editor = kwargs.get('enable_editor') or request.params.get('enable_editor') + + if is_iframe or is_editor: + # Render the actual website homepage directly. + # Do NOT call super().index() here — for logged-in admin users + # the standard Website.index() may redirect to /web (backend), + # which breaks the website editor iframe. + return request.render('website.homepage') + + # Not logged in → show the public website homepage if not request.session.uid: return request.render('website.homepage') - + # Remove sudo() to respect Odoo's standard menu group restrictions menus = request.env['ir.ui.menu'].search([ ('parent_id', '=', False) ], order='sequence') - + # User role checks - is_admin = request.env.user.has_group('base.group_system') or request.env.user.has_group('dine360_restaurant.group_restaurant_admin') - is_kitchen = request.env.user.has_group('dine360_restaurant.group_restaurant_kitchen') + try: + is_admin = request.env.user.has_group('base.group_system') or \ + request.env.user.has_group('dine360_restaurant.group_restaurant_admin') + is_kitchen = request.env.user.has_group('dine360_restaurant.group_restaurant_kitchen') + except Exception: + is_admin = request.env.user.has_group('base.group_system') + is_kitchen = False filtered_menus = [] seen_names = set() for menu in menus: - # 1. Hide "Apps" for non-admins (usually name is 'Apps' or xmlid has base.menu_management) + # 1. Hide "Apps" for non-admins if (menu.name == 'Apps' or (menu.web_icon and menu.web_icon.startswith('base,'))) and not is_admin: continue - - # 2. Hide "Kitchen (KDS)" for Waiters (only show for Kitchen Staff or Admin) + + # 2. Hide "Kitchen (KDS)" for non-kitchen/non-admin users if 'Kitchen' in menu.name or 'KDS' in menu.name: if not (is_kitchen or is_admin): continue - - # 3. De-duplicate by name to prevent double icons (like Kitchen showing twice) + + # 3. De-duplicate by name if menu.name in seen_names: continue seen_names.add(menu.name) - + filtered_menus.append(menu) - + # Low Stock Alerts (Ingredients) low_stock_products = [] try: - # Try to get low stock products if the model and method exist ProductTemplate = request.env['product.template'].sudo() if hasattr(ProductTemplate, 'get_low_stock_products'): low_stock_products = ProductTemplate.get_low_stock_products(limit=5) except Exception: - # Fallback if module is not yet fully loaded or method missing low_stock_products = [] - - return request.render('dine360_dashboard.image_home_template', { 'menus': filtered_menus, 'user_id': request.env.user, diff --git a/addons/dine360_dashboard/data/branding_data.xml b/addons/dine360_dashboard/data/branding_data.xml index 3cf40ad..46e4680 100644 --- a/addons/dine360_dashboard/data/branding_data.xml +++ b/addons/dine360_dashboard/data/branding_data.xml @@ -10,10 +10,8 @@ +1(647)856-2878 - - - +1(647)856-2878 - + diff --git a/addons/dine360_recipe/__manifest__.py b/addons/dine360_recipe/__manifest__.py index d78d226..72875ee 100644 --- a/addons/dine360_recipe/__manifest__.py +++ b/addons/dine360_recipe/__manifest__.py @@ -4,7 +4,7 @@ 'category': 'Manufacturing', 'summary': 'Manage recipes and automatic ingredient-level inventory deduction', 'author': 'Dine360', - 'depends': ['point_of_sale', 'stock', 'dine360_restaurant'], + 'depends': ['point_of_sale', 'stock'], 'data': [ 'security/ir.model.access.csv', 'views/recipe_views.xml', diff --git a/addons/dine360_restaurant/views/pos_order_views.xml b/addons/dine360_restaurant/views/pos_order_views.xml index 9804ae3..9fed2c2 100644 --- a/addons/dine360_restaurant/views/pos_order_views.xml +++ b/addons/dine360_restaurant/views/pos_order_views.xml @@ -29,6 +29,9 @@ + Kitchen Display + + 30