updated with dine360 branding

This commit is contained in:
metatroncubeswdev 2026-01-31 08:29:51 -05:00
parent a4a383d982
commit b56c531377
78 changed files with 211 additions and 65 deletions

View File

@ -6,7 +6,7 @@ Successfully changed the entire Odoo site's primary color to **#fecd4f** (Golden
## Changes Made
### 1. Created Theme Variables File
**File:** `d:\Odoo\addons\home_dashboard\static\src\css\theme_variables.css`
**File:** `d:\Odoo\addons\dine360_dashboard\static\src\css\theme_variables.css`
- Defined CSS custom properties (variables) for the primary color and all variations
- Applied primary color to all common Odoo UI elements:
- Buttons (primary, save, create)
@ -25,7 +25,7 @@ Successfully changed the entire Odoo site's primary color to **#fecd4f** (Golden
- Search bars
### 2. Updated Home Menu CSS
**File:** `d:\Odoo\addons\home_dashboard\static\src\css\home_menu.css`
**File:** `d:\Odoo\addons\dine360_dashboard\static\src\css\home_menu.css`
- App card hover effects now use primary color (#fecd4f)
- App name hover color changed to primary color
- User avatar background uses gradient with primary color
@ -33,11 +33,11 @@ Successfully changed the entire Odoo site's primary color to **#fecd4f** (Golden
- AI icon gradient updated to include primary color
### 3. Updated Manifest
**File:** `d:\Odoo\addons\home_dashboard\__manifest__.py`
**File:** `d:\Odoo\addons\dine360_dashboard\__manifest__.py`
- Added `theme_variables.css` to assets list (loads first)
### 4. Existing Login Page
**File:** `d:\Odoo\addons\home_dashboard\static\src\css\login_style.css`
**File:** `d:\Odoo\addons\dine360_dashboard\static\src\css\login_style.css`
- Already uses #fecd4f in the gradient background
- Login button uses gradient from secondary to primary color
@ -69,7 +69,7 @@ Successfully changed the entire Odoo site's primary color to **#fecd4f** (Golden
2. **Update the Module:**
```bash
docker-compose exec odoo odoo -u home_dashboard -d FOODIES-DELIGHT --stop-after-init
docker-compose exec odoo odoo -u dine360_dashboard -d FOODIES-DELIGHT --stop-after-init
```
3. **Clear Browser Cache:**
@ -92,7 +92,7 @@ After restarting, check these elements for the primary color:
## Customization
To change the primary color in the future, simply edit:
`d:\Odoo\addons\home_dashboard\static\src\css\theme_variables.css`
`d:\Odoo\addons\dine360_dashboard\static\src\css\theme_variables.css`
Update the `--primary-color` variable at the top of the file:
```css
@ -103,3 +103,4 @@ Update the `--primary-color` variable at the top of the file:
```
Then restart Odoo and clear browser cache.

113
README.md Normal file
View File

@ -0,0 +1,113 @@
# Dine360 Odoo Addons
This repository contains custom Odoo 17 addons for the Dine360 Restaurant Suite. It includes a website theme, a custom login/dashboard experience, and a restaurant role-based access module, all bundled by a meta module for one-click install.
## Stack
- Odoo 17 (Docker)
- Postgres 15 (Docker)
- Addons mounted from `./addons`
## Services (Docker)
- Odoo: `http://localhost:10001`
- DB: Postgres 15 (`odoo` / `odoo`)
## Repository Layout
- `addons/` Odoo addons
- `docker-compose.yml` Odoo + Postgres stack
- `backup_db.ps1`, `export_odoo.ps1` Windows helpers
- `inspect_views.py`, `resolve_homepage.py`, etc. view debugging helpers
## Addons
### 1) `dine360_dashboard`
Custom login layout and app-grid dashboard landing page.
Key features:
- Redirect `/web/login` to `/` after successful login
- Override `/` for authenticated users to show a custom app dashboard
- Custom login page layout and styling
Key files:
- `addons/dine360_dashboard/controllers/main.py`
- `addons/dine360_dashboard/views/home_template.xml`
- `addons/dine360_dashboard/views/login_templates.xml`
- `addons/dine360_dashboard/views/web_title_template.xml`
- `addons/dine360_dashboard/views/website_logo.xml`
- `addons/dine360_dashboard/static/src/css/*`
### 2) `dine360_restaurant`
Role-based access control for restaurant staff.
Roles:
- Admin/Owner, Manager, Cashier, Waiter/Captain, Kitchen (KDS), Store Keeper
Key files:
- `addons/dine360_restaurant/models/res_users.py`
- `addons/dine360_restaurant/security/*`
- `addons/dine360_restaurant/views/*`
### 3) `dine360_theme_chennora`
Custom website theme and page content (homepage + contact us).
Key files:
- `addons/dine360_theme_chennora/views/layout.xml`
- `addons/dine360_theme_chennora/views/pages.xml`
- `addons/dine360_theme_chennora/static/src/scss/*`
- `addons/dine360_theme_chennora/static/src/img/*`
### 4) `Dine360_Chennora` (meta module)
Install this single module to pull in all required addons.
Depends on:
- `dine360_dashboard`
- `dine360_restaurant`
- `dine360_theme_chennora`
## Standard Install / Upgrade
### Start the stack
```bash
docker-compose up -d
```
### Update Apps list
- Apps -> Update Apps List
### Install the suite (recommended)
- Apps -> search `Dine360 Restaurant Suite` -> Install
### Upgrade the suite (after code changes)
```bash
docker exec odoo_client1 odoo -u Dine360_Chennora -d chennora_db --db_host db --db_user odoo --db_password odoo --stop-after-init
```
### Upgrade a single addon
```bash
docker exec odoo_client1 odoo -u dine360_dashboard -d chennora_db --db_host db --db_user odoo --db_password odoo --stop-after-init
```
## Logos (Apps icons)
Place PNGs here (128x128 or 256x256 recommended):
- `addons/Dine360_Chennora/static/description/icon.png`
- `addons/dine360_dashboard/static/description/icon.png`
- `addons/dine360_restaurant/static/description/icon.png`
- `addons/dine360_theme_chennora/static/description/icon.png`
## Troubleshooting
### 500 error after view edits
- Upgrade the affected module
- Restart Odoo: `docker-compose restart odoo`
- Hard refresh browser (Ctrl + F5)
### Old modules still present (home_dashboard, restaurant_management, theme_chennora)
If you renamed modules, uninstall the old ones in Apps to avoid conflicts.
## Utilities
Helper scripts for view diagnostics and homepage issues:
- `inspect_views.py`, `inspect_views_v2.py`
- `resolve_homepage.py`, `fix_homepage.py`, `force_inherit.py`
## Notes
- Homepage content is fully overridden in `addons/dine360_theme_chennora/views/pages.xml`.
- If theme changes dont appear, check for COW (customized) views masking the theme.

View File

@ -0,0 +1 @@
# Meta module for Dine360 Chennora

View File

@ -0,0 +1,17 @@
{
'name': 'Dine360 Restaurant Suite',
'version': '1.0.0',
'license': 'LGPL-3',
'category': 'Website',
'summary': 'Installs all Dine360 Restaurant modules',
'author': 'Dine360',
'depends': [
'dine360_dashboard',
'dine360_restaurant',
'dine360_theme_chennora',
],
'data': [],
'installable': True,
'application': True,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
addons/d360_Dashboard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
addons/d360_Restaurant.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
addons/d360_Theme.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
addons/d360_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -24,7 +24,7 @@ try:
# Check theme view logic
# The theme view should replace website.homepage
theme_view = env.ref('theme_chennora.custom_homepage', raise_if_not_found=False)
theme_view = env.ref('dine360_theme_chennora.custom_homepage', raise_if_not_found=False)
if theme_view:
print(f"Theme view found: {theme_view.name} (ID: {theme_view.id}, Priority: {theme_view.priority})")
# Ensure it's active
@ -37,7 +37,7 @@ try:
theme_view.write({'priority': 50})
print(" - Updated priority to 50")
else:
print("WARNING: Theme view 'theme_chennora.custom_homepage' not found! Make sure the module is upgraded.")
print("WARNING: Theme view 'dine360_theme_chennora.custom_homepage' not found! Make sure the module is upgraded.")
env.cr.commit()
print("--- FIX COMPLETE ---")
@ -45,3 +45,4 @@ except Exception as e:
print(f"ERROR: {e}")
import traceback
traceback.print_exc()

View File

@ -0,0 +1,3 @@
# dine360_dashboard/__init__.py
from . import controllers

View File

@ -1,5 +1,5 @@
{
'name': 'home_dashboard',
'name': 'Dine360 Dashboard',
'version': '1.0.1',
'license': 'LGPL-3',
'category': 'Website',
@ -14,23 +14,23 @@
],
'assets': {
'web.assets_backend': [
'home_dashboard/static/src/css/theme_variables.css',
'home_dashboard/static/src/css/home_menu.css',
'home_dashboard/static/src/js/chennora_title.js',
'dine360_dashboard/static/src/css/theme_variables.css',
'dine360_dashboard/static/src/css/home_menu.css',
'dine360_dashboard/static/src/js/chennora_title.js',
],
'web.assets_frontend': [
'home_dashboard/static/src/css/theme_variables.css',
'home_dashboard/static/src/css/login_style.css',
'home_dashboard/static/src/css/website_style.css',
'home_dashboard/static/src/css/shop_style.css',
'dine360_dashboard/static/src/css/theme_variables.css',
'dine360_dashboard/static/src/css/login_style.css',
'dine360_dashboard/static/src/css/website_style.css',
'dine360_dashboard/static/src/css/shop_style.css',
],
'web.assets_common': [
'home_dashboard/static/src/css/theme_variables.css',
'dine360_dashboard/static/src/css/theme_variables.css',
],
'point_of_sale._assets_pos': [
'home_dashboard/static/src/css/pos_style.css',
'dine360_dashboard/static/src/css/pos_style.css',
],
},
'installable': True,
'application': True,
}
}

View File

@ -0,0 +1,4 @@
# dine360_dashboard/controllers/__init__.py
from . import main
from . import cors

View File

@ -20,7 +20,7 @@ class ImageHome(Website):
('parent_id', '=', False)
], order='sequence')
return request.render('home_dashboard.image_home_template', {
return request.render('dine360_dashboard.image_home_template', {
'menus': menus,
'user_id': request.env.user
})
@ -28,4 +28,4 @@ class ImageHome(Website):
@http.route('/home', type='http', auth="public", website=True, sitemap=True)
def website_home(self, **kw):
# Explicit route for standard Website Homepage
return request.render('website.homepage')
return request.render('website.homepage')

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -5,7 +5,7 @@
width: 100vw !important;
overflow: hidden;
background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
url('/home_dashboard/static/src/img/login_bg.png') no-repeat center center !important;
url('/dine360_dashboard/static/src/img/login_bg.png') no-repeat center center !important;
background-size: cover !important;
}
@ -19,7 +19,7 @@
position: relative;
/* Dark overlay on image for text readability */
/* background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
url('/home_dashboard/static/src/img/login_bg.png') no-repeat center center !important;
url('/dine360_dashboard/static/src/img/login_bg.png') no-repeat center center !important;
background-size: cover !important; */
color: white !important;
}
@ -238,7 +238,7 @@ body.o_custom_login_body .o_login_main_wrapper {
/* width: 100vw !important; */
overflow: hidden !important;
background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
url('/home_dashboard/static/src/img/login_bg.png') no-repeat center center !important;
url('/dine360_dashboard/static/src/img/login_bg.png') no-repeat center center !important;
background-size: cover !important;
color: white !important;
}
@ -256,4 +256,4 @@ body.o_custom_login_body .o_login_main_wrapper {
border: 1px solid rgba(255, 255, 255, 0.1) !important;
z-index: 2;
max-width: 400px;
}
}

View File

Before

Width:  |  Height:  |  Size: 760 KiB

After

Width:  |  Height:  |  Size: 760 KiB

View File

@ -3,7 +3,7 @@
<t t-call="web.frontend_layout">
<t t-set="no_footer" t-value="True"/>
<t t-set="no_header" t-value="True"/>
<link rel="stylesheet" type="text/css" href="/home_dashboard/static/src/css/home_menu.css"/>
<link rel="stylesheet" type="text/css" href="/dine360_dashboard/static/src/css/home_menu.css"/>
<div class="o_home_menu_background">
<!-- Top Bar -->
@ -77,3 +77,4 @@
</t>
</template>
</odoo>

View File

@ -5,11 +5,11 @@
<t t-set="no_header" t-value="True"/>
<t t-set="no_footer" t-value="True"/>
<t t-set="head">
<link rel="stylesheet" type="text/css" href="/home_dashboard/static/src/css/login_style.css"/>
<link rel="stylesheet" type="text/css" href="/dine360_dashboard/static/src/css/login_style.css"/>
</t>
</xpath>
<xpath expr="//div[hasclass('container')]" position="replace">
<xpath expr="//div[contains(@class,'container')]" position="replace">
<div class="o_login_main_wrapper">
<div class="o_login_left_side">
<!-- Space for right alignment -->
@ -42,4 +42,4 @@
</div>
</xpath>
</template>
</odoo>
</odoo>

View File

@ -6,7 +6,7 @@
This template typically contains a single span or img for the logo.
-->
<template id="custom_website_logo_placeholder" inherit_id="website.placeholder_header_brand" name="Custom Website Logo Placeholder">
<xpath expr="//span" position="replace">
<xpath expr="/*" position="replace">
<img src="/web/binary/company_logo" t-att-alt="website.name" class="img-fluid" style="height: 3rem;"/>
</xpath>
</template>

View File

@ -1,5 +1,5 @@
{
'name': 'Restaurant Management System',
'name': 'Dine360 Restaurant',
'version': '1.0',
'category': 'Sales/Point of Sale',
'summary': 'Advanced Role-Based Access for Restaurants',
@ -12,7 +12,7 @@
- Kitchen (KDS)
- Store Keeper
""",
'author': 'Antigravity',
'author': 'Dine360',
'depends': ['point_of_sale', 'purchase', 'stock', 'website_sale'],
'data': [
'security/restaurant_security.xml',

View File

@ -20,41 +20,41 @@ class ResUsers(models.Model):
# Map roles to their XML IDs and REQUIRED Odoo Base groups to keep sections visible
role_mapping = {
'waiter': [
'restaurant_management.group_restaurant_waiter',
'dine360_restaurant.group_restaurant_waiter',
'base.group_user',
'point_of_sale.group_pos_user'
],
'chef': [
'restaurant_management.group_restaurant_kitchen',
'dine360_restaurant.group_restaurant_kitchen',
'base.group_user'
],
'cashier': [
'restaurant_management.group_restaurant_cashier',
'dine360_restaurant.group_restaurant_cashier',
'base.group_user',
'point_of_sale.group_pos_user'
],
'manager': [
'restaurant_management.group_restaurant_manager',
'dine360_restaurant.group_restaurant_manager',
'base.group_user',
'point_of_sale.group_pos_manager',
'stock.group_stock_user'
],
'admin': [
'restaurant_management.group_restaurant_admin',
'dine360_restaurant.group_restaurant_admin',
'base.group_user',
'point_of_sale.group_pos_manager',
'stock.group_stock_manager',
'base.group_system'
],
'store': [
'restaurant_management.group_restaurant_store_keeper',
'dine360_restaurant.group_restaurant_store_keeper',
'base.group_user',
'stock.group_stock_user'
],
}
# 1. Clear existing restaurant groups (only in our custom category)
category_staff = self.env.ref('restaurant_management.module_category_restaurant_staff', raise_if_not_found=False)
category_staff = self.env.ref('dine360_restaurant.module_category_restaurant_staff', raise_if_not_found=False)
if category_staff:
restaurant_groups = self.env['res.groups'].search([('category_id', '=', category_staff.id)])
self.groups_id = [(3, g.id) for g in restaurant_groups]
@ -68,3 +68,4 @@ class ResUsers(models.Model):
group_commands.append((4, group.id))
self.groups_id = group_commands

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,9 +1,9 @@
{
'name': 'Chennora Theme',
'description': 'Custom theme for Chennora website',
'name': 'Dine360 Theme Chennora',
'description': 'Custom theme for Dine360 Chennora website',
'category': 'Theme/Website',
'version': '1.0',
'author': 'Your Company',
'author': 'Dine360',
'depends': ['website', 'website_sale', 'website_crm'],
'data': [
'views/layout.xml', # Header, Footer, and Global Layout changes
@ -14,8 +14,8 @@
],
'assets': {
'web.assets_frontend': [
'theme_chennora/static/src/scss/primary_variables.scss',
'theme_chennora/static/src/scss/theme.scss',
'dine360_theme_chennora/static/src/scss/primary_variables.scss',
'dine360_theme_chennora/static/src/scss/theme.scss',
],
},
'images': [
@ -25,3 +25,4 @@
'application': True,
'license': 'LGPL-3',
}

View File

@ -0,0 +1,4 @@
v = env['ir.ui.view'].browse(3221)
with open('/mnt/extra-addons/dine360_theme_chennora/view_3221.xml', 'w') as f:
f.write(str(v.arch_db))

View File

Before

Width:  |  Height:  |  Size: 525 KiB

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -18,7 +18,7 @@
<div class="carousel-inner">
<div class="carousel-item o_colored_level pb256 pt256 active oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/theme_chennora/static/src/img/chen-banner-1.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1135" data-original-src="/web/image/1135-573357bb/chen-banner-1.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="carousel-item o_colored_level pb256 pt256 active oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/dine360_theme_chennora/static/src/img/chen-banner-1.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1135" data-original-src="/web/image/1135-573357bb/chen-banner-1.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="oe_unremovable container">
<div class="row">
<div class="carousel-content o_colored_level col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll o_visible" style="">
@ -30,7 +30,7 @@
</div>
</div>
</div>
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/theme_chennora/static/src/img/chen-banner-2.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1110" data-original-src="/web/image/1110-55a80a07/banner-2%20%281%29.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/dine360_theme_chennora/static/src/img/chen-banner-2.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1110" data-original-src="/web/image/1110-55a80a07/banner-2%20%281%29.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="oe_unremovable container">
<div class="row">
<div class="carousel-content o_colored_level col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll" style="background-color: rgba(255, 0, 0, 0);">
@ -42,7 +42,7 @@
</div>
</div>
</div>
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/theme_chennora/static/src/img/chen-banner-3.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1137" data-original-src="/web/image/1137-113d553b/chen-banner-3.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/dine360_theme_chennora/static/src/img/chen-banner-3.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1137" data-original-src="/web/image/1137-113d553b/chen-banner-3.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="oe_unremovable container">
<div class="row">
<div class="carousel-content o_colored_level col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll" style="background-color: rgba(255, 0, 0, 0);">
@ -353,7 +353,7 @@ Chennora is rated among the best Indian restaurants in Brampton, offering authen
<xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure">
<!-- Hero Section -->
<section class="s_title o_colored_level pt96 pb96 oe_img_bg o_bg_img_center" data-snippet="s_title" style="background-color: rgb(4, 18, 29); background-image: url('/theme_chennora/static/src/img/chen-banner-1.webp');">
<section class="s_title o_colored_level pt96 pb96 oe_img_bg o_bg_img_center" data-snippet="s_title" style="background-color: rgb(4, 18, 29); background-image: url('/dine360_theme_chennora/static/src/img/chen-banner-1.webp');">
<div class="o_we_bg_filter bg-black-75"/>
<div class="container s_allow_columns">
<h1 class="display-3-fs text-center" style="text-align: center;"><font class="text-o-color-3">About Chennora's</font></h1>
@ -640,3 +640,4 @@ Chennora is rated among the best Indian restaurants in Brampton, offering authen
</data>
</odoo>

View File

@ -21,9 +21,10 @@
<!--
<template id="snippets_registration" inherit_id="website.snippets" name="Register Custom Snippets">
<xpath expr="//div[@id='snippet_structure']" position="inside">
<t t-snippet="theme_chennora.s_custom_banner" t-thumbnail="/theme_chennora/static/src/img/s_banner_thumb.jpg"/>
<t t-snippet="dine360_theme_chennora.s_custom_banner" t-thumbnail="/dine360_theme_chennora/static/src/img/s_banner_thumb.jpg"/>
</xpath>
</template>
-->
</data>
</odoo>

View File

@ -1,2 +0,0 @@
# home_dashboard/__init__.py
from . import controllers

View File

@ -1,3 +0,0 @@
# home_dashboard/controllers/__init__.py
from . import main
from . import cors

View File

@ -1,3 +0,0 @@
v = env['ir.ui.view'].browse(3221)
with open('/mnt/extra-addons/theme_chennora/view_3221.xml', 'w') as f:
f.write(str(v.arch_db))

View File

@ -1,7 +1,7 @@
print("--- DUMPING THEME VIEW ---")
try:
theme_view = env.ref('theme_chennora.custom_homepage')
theme_view = env.ref('dine360_theme_chennora.custom_homepage')
print(f"Name: {theme_view.name}")
print(f"ID: {theme_view.id}")
print(f"Type: {theme_view.type}")
@ -15,3 +15,4 @@ try:
print(theme_view.arch[:200])
except Exception as e:
print(f"Error: {e}")

View File

@ -22,7 +22,7 @@ try:
print("No Blocking Custom Views (COW) found.")
# 2. Ensure Theme View is Active
theme_view = env.ref('theme_chennora.custom_homepage', raise_if_not_found=False)
theme_view = env.ref('dine360_theme_chennora.custom_homepage', raise_if_not_found=False)
if theme_view:
print(f"Theme View found: {theme_view.name}")
if not theme_view.active:
@ -37,10 +37,11 @@ try:
print(" -> Enforced Priority 50")
else:
print("ERROR: Theme View 'theme_chennora.custom_homepage' NOT FOUND. Please upgrade the module.")
print("ERROR: Theme View 'dine360_theme_chennora.custom_homepage' NOT FOUND. Please upgrade the module.")
env.cr.commit()
print("--- REPAIR COMPLETE. PLEASE REFRESH HOMEPAGE ---")
except Exception as e:
print(f"ERROR: {e}")

View File

@ -6,7 +6,7 @@ try:
print(f"Generic Homepage: {homepage.name} (ID: {homepage.id})")
# 2. Get the Theme View
theme_view = env.ref('theme_chennora.custom_homepage', raise_if_not_found=False)
theme_view = env.ref('dine360_theme_chennora.custom_homepage', raise_if_not_found=False)
if not theme_view:
print("Theme view not found by XMLID! Searching by name...")
@ -35,3 +35,4 @@ try:
except Exception as e:
print(f"Error: {e}")

View File

@ -31,11 +31,12 @@ try:
print(f" {cv.arch[:100]}...")
# Check if our theme view is actually in the db
theme_view = env.ref('theme_chennora.custom_homepage', raise_if_not_found=False)
theme_view = env.ref('dine360_theme_chennora.custom_homepage', raise_if_not_found=False)
if theme_view:
print(f"\nTheme View Record: {theme_view.name} (ID: {theme_view.id}, Active: {theme_view.active}, Priority: {theme_view.priority})")
else:
print("\nTheme View 'theme_chennora.custom_homepage' NOT FOUND in DB.")
print("\nTheme View 'dine360_theme_chennora.custom_homepage' NOT FOUND in DB.")
except Exception as e:
print(f"Error: {e}")

View File

@ -24,7 +24,7 @@ try:
print(" This view is likely BLOCKING your theme changes.")
# Check our theme view
theme_view = env.ref('theme_chennora.custom_homepage', raise_if_not_found=False)
theme_view = env.ref('dine360_theme_chennora.custom_homepage', raise_if_not_found=False)
if theme_view:
print(f"\nTheme View Record: {theme_view.name} (ID: {theme_view.id})")
print(f" - Active: {theme_view.active}")
@ -40,7 +40,8 @@ try:
# If COW view exists, check if theme view is inherited by the COW view?
# Usually COW views replace the whole structure or inherit from the generic one but ignore other inherits if not careful.
else:
print("\n[!] ERROR: Theme View 'theme_chennora.custom_homepage' NOT FOUND in DB.")
print("\n[!] ERROR: Theme View 'dine360_theme_chennora.custom_homepage' NOT FOUND in DB.")
except Exception as e:
print(f"Error: {e}")