Update Chennora theme with new offer cards and assets

This commit is contained in:
Alaguraj0361 2026-02-02 18:18:53 +05:30
parent b28e05b057
commit 2447db0726
16 changed files with 443 additions and 76 deletions

68
HOW_TO_UPDATE_THEME.md Normal file
View File

@ -0,0 +1,68 @@
# How to Update the Chennora Theme
## The 3 cards are not showing because the theme module needs to be upgraded in Odoo.
### Quick Fix - Upgrade via Web Interface:
1. **Open your browser** and go to: `http://localhost:10002`
2. **Login to Odoo** with your credentials
3. **Go to Apps** (click the grid icon in top menu)
4. **Remove the "Apps" filter**:
- You'll see a search bar that says "Apps"
- Click the ❌ (X) next to "Apps" to remove the filter
5. **Search for "chennora"**:
- Type "chennora" in the search box
- You should see "Dine360 Theme Chennora"
6. **Click "Upgrade"**:
- Click the "Upgrade" button on the module card
- Wait for the upgrade to complete
7. **Go to Website**:
- Click "Website" in the top menu
- Or go to: `http://localhost:10002`
8. **Refresh the page** (Ctrl + F5 or Cmd + Shift + R)
### What Changed:
✅ **3 New Food Images Added:**
- `gobi-65.png` - Crispy Gobi 65
- `unlimited-thali.png` - Unlimited Thali
- `fish-curry.png` - Fiery Fish Curry
✅ **New Card Design:**
- Dark background (#04121D)
- Text on left, image on right
- Yellow "ORDER NOW" buttons
- Matches your reference design
### If Images Still Don't Show:
The images are located at:
```
/dine360_theme_chennora/static/src/img/gobi-65.png
/dine360_theme_chennora/static/src/img/unlimited-thali.png
/dine360_theme_chennora/static/src/img/fish-curry.png
```
You can verify they load by visiting:
- `http://localhost:10002/dine360_theme_chennora/static/src/img/gobi-65.png`
- `http://localhost:10002/dine360_theme_chennora/static/src/img/unlimited-thali.png`
- `http://localhost:10002/dine360_theme_chennora/static/src/img/fish-curry.png`
### Alternative: Restart Everything
If the upgrade doesn't work, try:
```bash
cd d:\ODOO_Final
docker-compose down
docker-compose up
```
Then upgrade the module again through the web interface.

142
IMPLEMENTATION_SUMMARY.md Normal file
View File

@ -0,0 +1,142 @@
# Chennora Theme Implementation Summary
## Completed Steps
### 1. Asset Migration
**Copied main.css** from Vite project to Odoo theme
- Source: `d:\chennora-final\chennora\src\assets\main.css`
- Destination: `d:\ODOO_Final\odoo-testing-addons\addons\dine360_theme_chennora\static\src\css\main.css`
**Copied all assets** (images, icons, etc.)
- Source: `d:\chennora-final\chennora\public\assets`
- Destination: `d:\ODOO_Final\odoo-testing-addons\addons\dine360_theme_chennora\static\src\assets\`
- Total: 1039 files copied
✅ **Updated __manifest__.py**
- Added main.css to assets_frontend
- Added Bootstrap Icons CDN link to layout.xml
### 2. Homepage Structure Analysis
The Chennora Vite website homepage consists of these sections (in order):
1. **Banner** - Hero carousel with 3 slides
2. **Offer Cards** - 3 promotional cards (Gobi 65, Unlimited Thali, Fish Curry)
3. **About Section** - Image + text about the restaurant
4. **Today's Special** - CTA section with background image
5. **Categories** - Feature category slider (18+ food categories)
6. **Popular Menu** - Interactive menu with center image
7. **Client Testimonials** - Google reviews carousel
8. **FAQ** - Accordion with 3 questions
9. **Blog** - Latest 3 blog posts
10. **Gallery** - Image slider (8 images)
### 3. Current Odoo Implementation Status
✅ **Already Implemented in pages.xml:**
- Banner carousel (3 slides) ✓
- Offer cards section ✓
- About section ✓
- Today's Special/Why Choose section ✓
- Categories grid ✓
- Popular Deals section ✓
- Testimonials carousel ✓
- FAQ accordion ✓
- Blog section ✓
- Gallery masonry ✓
## What's Missing
### Critical Items:
1. **CSS Asset Loading**
- Main.css is added but needs verification that all styles load correctly
- Asset paths need to be updated from `/assets/` to `/dine360_theme_chennora/static/src/assets/`
2. **JavaScript Dependencies**
- React Slick carousel (used in Vite) → Need Odoo equivalent or vanilla JS
- Bootstrap Icons (added via CDN)
- Custom animations and interactions
3. **Dynamic Content**
- Blog posts (currently hardcoded, need to pull from Odoo blog module)
- Google Reviews API integration
- Menu items (need to connect to product catalog)
4. **Asset Path Updates in XML**
- Update all image references in pages.xml to use correct Odoo paths
- Currently using `/web/image/` for some, need consistency
## Next Steps
### Phase 1: Asset Path Correction
```bash
# Update all asset references in pages.xml from:
/assets/img/...
# to:
/dine360_theme_chennora/static/src/assets/img/...
```
### Phase 2: Test and Verify
1. Restart Odoo server
2. Update the theme module
3. Check homepage rendering
4. Verify all images load
5. Check CSS styling
### Phase 3: Dynamic Content Integration
1. Connect blog section to Odoo blog posts
2. Integrate product catalog for menu items
3. Set up Google Reviews API (if needed)
### Phase 4: JavaScript Enhancements
1. Add carousel functionality (if not using Odoo's built-in)
2. Add smooth scroll animations
3. Add interactive elements
## File Locations
### Odoo Theme Files:
- **Main Theme**: `d:\ODOO_Final\odoo-testing-addons\addons\dine360_theme_chennora\`
- **Layout**: `views/layout.xml`
- **Pages**: `views/pages.xml`
- **CSS**: `static/src/css/main.css`
- **Assets**: `static/src/assets/`
- **Images**: `static/src/img/` (banner images)
### Vite Reference Files:
- **Source**: `d:\chennora-final\chennora\`
- **Components**: `src/Components/Home/`
- **Assets**: `public/assets/`
- **Main CSS**: `src/assets/main.css`
## Commands to Resume
```bash
# Navigate to Odoo directory
cd d:\ODOO_Final
# Restart Odoo (if needed)
docker-compose restart
# Update module
# Go to Apps → dine360_theme_chennora → Upgrade
```
## Key Differences: Vite vs Odoo
| Feature | Vite (React) | Odoo (QWeb) |
|---------|--------------|-------------|
| Carousel | React Slick | Bootstrap Carousel |
| Routing | React Router | Odoo Controllers |
| State | useState/useEffect | Server-side rendering |
| Assets | `/assets/` | `/module_name/static/` |
| Styling | CSS Modules | Global CSS |
## Notes
- The homepage structure in pages.xml closely matches the Vite version
- Main.css contains all the styling (335KB, 16,263 lines)
- Bootstrap Icons added via CDN for icon support
- All promotional images and content are already in place
- Need to verify asset paths work correctly in Odoo context

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 KiB

After

Width:  |  Height:  |  Size: 11 MiB

View File

@ -1 +1,70 @@
/* Put your custom CSS/SCSS rules here */
/* Chennora Theme Custom Styles */
// Hero Button Hover
.btn-lg.flat:hover,
.btn-custom:hover {
background-color: #2BB1A5 !important;
color: white !important;
transform: translateY(-3px);
transition: all 0.3s ease;
}
// Category Card Hover
.category-item {
transition: all 0.3s ease;
cursor: pointer;
&:hover {
transform: translateY(-10px);
.category-img {
border-color: #FECD4F !important;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
}
}
// Background Text Overlay
.bg-text-overlay {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
text-align: center;
z-index: 0;
pointer-events: none;
h1 {
font-size: 8rem;
font-weight: 900;
color: rgba(0, 0, 0, 0.03); // Very subtle
white-space: nowrap;
text-transform: uppercase;
margin: 0;
}
}
// Section Headers
.section-title-wrapper {
position: relative;
z-index: 1;
text-align: center;
margin-bottom: 50px;
.title-icon {
width: 40px;
margin: 0 10px;
filter: brightness(0.8);
}
}
// Footer
footer#bottom {
background-color: #0d3b37 !important; // Dark Teal
color: white;
a:hover {
color: #FECD4F !important;
}
}

View File

@ -7,65 +7,70 @@
<!-- ====================================================== -->
<template id="custom_homepage" inherit_id="website.homepage" name="Chennora Homepage" priority="1000">
<xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure"><section class="s_carousel_wrapper o_half_screen_height" data-vxml="001" data-snippet="s_carousel" data-name="Carousel">
<div class="s_carousel carousel s_carousel_rounded slide" data-bs-interval="10000" id="myCarousel1769233718425" style="background-image: none;">
<div id="wrap" class="oe_structure">
<section class="s_carousel_wrapper" data-vxml="001" data-snippet="s_carousel" data-name="Carousel">
<div class="s_carousel carousel s_carousel_rounded slide" data-bs-interval="10000" id="myCarouselChennora" data-bs-ride="carousel">
<ol class="carousel-indicators o_we_no_overlay">
<li data-bs-target="#myCarousel1769233718425" class="active" data-bs-slide-to="0" aria-current="true"/>
<li data-bs-target="#myCarousel1769233718425" data-bs-slide-to="1"/>
<li data-bs-target="#myCarousel1769233718425" data-bs-slide-to="2"/>
<li data-bs-target="#myCarouselChennora" class="active" data-bs-slide-to="0" aria-current="true"/>
<li data-bs-target="#myCarouselChennora" data-bs-slide-to="1"/>
<li data-bs-target="#myCarouselChennora" data-bs-slide-to="2"/>
</ol>
<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;/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="">
<h2 class="display-3-fs"><font class="text-o-color-3">Slide Title</font></h2>
<p class="lead"><font class="text-o-color-3">Use this snippet to presents your content in a slideshow-like format. Don't write about products or services here, write about solutions.</font></p>
<h6>
<a href="/contactus" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79);"><strong>Contact us</strong></a>
</h6>
<!-- Slide 1 -->
<div class="carousel-item o_colored_level pt256 pb256 active oe_img_bg o_bg_img_center" style="background-color: #04121D; background-image: url('/dine360_theme_chennora/static/src/img/chen-banner-1.webp'); min-height: 85vh; background-size: cover; background-position: center;" data-name="Slide">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 o_colored_level o_animate o_anim_fade_in_up">
<h6 style="color: #2BB1A5; font-weight: 700; letter-spacing: 2px;">WELCOME TO CHENNORA</h6>
<h1 class="display-3-fs" style="color: white; font-weight: 800; font-size: 4rem; line-height: 1.1; margin-bottom: 25px;">Flavors Of India In Brampton</h1>
<div class="mt-5">
<a href="/shop" class="btn btn-lg flat" style="background-color: #FECD4F; color: black; font-weight: 700; padding: 12px 35px; border-radius: 0; text-transform: uppercase;">ORDER NOW <span class="fa fa-long-arrow-right ms-2"/></a>
</div>
</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;/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);">
<h2 class="display-3-fs"><font class="text-o-color-4">Slide Title</font></h2>
<p class="lead"><font class="text-o-color-4">Use this snippet to presents your content in a slideshow-like format. Don't write about products or services</font><font class="bg-o-color-4 text-o-color-4"></font><font class="text-o-color-4"> here, write about solutions.</font></p>
<h6>
<a href="/contactus" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79);"><font class="text-o-color-5"><strong>Contact us</strong></font></a>
</h6>
</div>
<!-- Slide 2 -->
<div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center" style="background-color: #04121D; background-image: url('/dine360_theme_chennora/static/src/img/chen-banner-3.webp'); min-height: 85vh; background-size: cover; background-position: center;" data-name="Slide">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 o_colored_level o_animate o_anim_fade_in_up">
<h6 style="color: #FECD4F; font-weight: 700; letter-spacing: 2px;">AUTHENTIC TASTE</h6>
<h1 class="display-3-fs" style="color: white; font-weight: 800; font-size: 4rem; line-height: 1.1; margin-bottom: 25px;">Traditional South Indian Cuisine</h1>
<div class="mt-5">
<a href="/shop" class="btn btn-lg flat" style="background-color: #2BB1A5; color: white; font-weight: 700; padding: 12px 35px; border-radius: 0; text-transform: uppercase;">ORDER NOW <span class="fa fa-long-arrow-right ms-2"/></a>
</div>
</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;/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);">
<h2 class="display-3-fs"><font class="text-o-color-4">Slide Title</font></h2>
<p class="lead"><font class="text-o-color-4">Use this snippet to presents your content in a slideshow-like format. Don't write about products or services</font><font class="bg-o-color-4 text-o-color-4"></font><font class="text-o-color-4"> here, write about solutions.</font></p>
<h6>
<a href="/contactus" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79); border-color: rgb(254, 205, 79);"><strong>Contact us</strong></a>
</h6>
</div>
<!-- Slide 3 -->
<div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center" style="background-color: #04121D; background-image: url('/dine360_theme_chennora/static/src/img/chen-banner-2.webp'); min-height: 85vh; background-size: cover; background-position: center;" data-name="Slide">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 o_colored_level o_animate o_anim_fade_in_up">
<h6 style="color: #2BB1A5; font-weight: 700; letter-spacing: 2px;">EXPERIENCE QUALITY</h6>
<h1 class="display-3-fs" style="color: white; font-weight: 800; font-size: 4rem; line-height: 1.1; margin-bottom: 25px;">Best Indian Food Experience</h1>
<div class="mt-5">
<a href="/shop" class="btn btn-lg flat" style="background-color: #FECD4F; color: black; font-weight: 700; padding: 12px 35px; border-radius: 0; text-transform: uppercase;">ORDER NOW <span class="fa fa-long-arrow-right ms-2"/></a>
</div>
</div>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev o_not_editable o_we_no_overlay" role="img" aria-label="Previous" title="Previous" href="#myCarousel1769233718425" data-bs-slide="prev">
<a class="carousel-control-prev o_not_editable o_we_no_overlay" role="img" aria-label="Previous" title="Previous" href="#myCarouselChennora" data-bs-slide="prev">
<span class="carousel-control-prev-icon"/>
<span class="visually-hidden o_default_snippet_text">Previous</span>
</a>
<a class="carousel-control-next o_not_editable o_we_no_overlay" role="img" aria-label="Next" title="Next" href="#myCarousel1769233718425" data-bs-slide="next">
<a class="carousel-control-next o_not_editable o_we_no_overlay" role="img" aria-label="Next" title="Next" href="#myCarouselChennora" data-bs-slide="next">
<span class="carousel-control-next-icon"/>
<span class="visually-hidden o_default_snippet_text">Next</span>
</a>
@ -130,29 +135,45 @@ At Chennora, we blend traditional Indian cooking techniques with the freshest lo
</ul>
</div>
</section><section class="s_masonry_block o_colored_level pb48" data-vcss="001" data-vxml="001" data-snippet="s_masonry_block" data-name="Masonry" style="background-color: rgb(244, 241, 234); background-image: none;" data-masonry-template="default">
<div class="container-fluid">
<div class="row o_grid_mode" data-row-count="12">
<div class="o_grid_item col-lg-6 g-col-lg-6 g-height-10 o_grid_item_image text-center o_colored_level o_animate o_anim_slide_in o_anim_from_left o_animate_both_scroll" data-name="Block" style="grid-area: 1 / 1 / 11 / 7; z-index: 1; background-image: none;">
<img src="/web/image/website.s_masonry_block_default_image_1" class="img img-fluid mx-auto" alt="" loading="eager" data-mimetype="image/jpeg" data-original-id="842" data-original-src="/website/static/src/img/snippets_demo/s_masonry_block_1.jpg" data-mimetype-before-conversion="image/jpeg"/>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc2 o_colored_level o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll" data-name="Block" style="grid-area: 1 / 7 / 6 / 10; z-index: 2; background-image: none;">
<h3><img src="/web/image/1127-129df970/today-special.webp" alt="" class="img img-fluid o_we_custom_image" data-mimetype="image/webp" data-original-id="1125" data-original-src="/web/image/1125-217f82a3/today-special.webp" data-mimetype-before-conversion="image/webp" data-resize-width="541" loading="eager"/></h3>
<p class="o_default_snippet_text">And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc3 o_colored_level o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll" data-name="Block" style="grid-area: 1 / 10 / 6 / 13; z-index: 3; background-image: none; animation-delay: 1s;">
<h3 class="o_default_snippet_text">A great title</h3>
<p class="o_default_snippet_text">And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc4 o_colored_level o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll" data-name="Block" style="grid-area: 6 / 7 / 11 / 10; z-index: 4; background-image: none;">
<h3 class="o_default_snippet_text">A great title</h3>
<p class="o_default_snippet_text">And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc2 o_colored_level o_anim_fade_in o_animate o_animate_both_scroll" data-name="Block" style="grid-area: 6 / 10 / 11 / 13; z-index: 5; background-image: none; animation-delay: 1s;">
<h3 class="o_default_snippet_text">A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-4 g-col-lg-4 g-height-2 o_colored_level o_animate o_anim_slide_in o_anim_from_left o_animate_both_scroll" style="z-index: 6; background-image: none; grid-area: 5 / 2 / 7 / 6;"><h3 style="text-align: center;">Write something...</h3><p style="text-align: center;">sfdsdfsfsdfsdfsfssdfsfsdfsfd</p></div><div class="o_grid_item col-lg-2 g-col-lg-2 g-height-1 o_colored_level" style="z-index: 7; background-image: none; grid-area: 12 / 6 / 13 / 8;"><a href="#" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79); border-color: rgb(254, 205, 79);"><h6><strong>View More<br/></strong></h6></a></div><div class="o_grid_item g-height-2 o_colored_level g-col-lg-3 col-lg-3" style="z-index: 8; background-image: none; grid-area: 2 / 7 / 4 / 10;"><p style="text-align: center;">Write something...</p></div></div>
</section> <section class="s_features_grid o_colored_level pt32 pb64" data-snippet="s_features_grid" data-name="Feature Columns" style="background-color: rgb(244, 241, 234);">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-2 col-md-4 col-6 text-center mb-4 category-item">
<div class="bg-white rounded p-1 shadow-sm mb-3 category-img" style="border: 2px solid transparent;">
<img src="/web/image/1141-88fd5340/2.webp" class="img img-fluid rounded" style="width: 100%; aspect-ratio: 1/1; object-fit: cover;" alt="SOUPS"/>
</div>
<h6 style="font-weight: 700;">SOUPS</h6>
<small class="text-muted">15 Items</small>
</div>
<div class="col-lg-2 col-md-4 col-6 text-center mb-4 category-item">
<div class="bg-white rounded p-1 shadow-sm mb-3 category-img" style="border: 2px solid transparent;">
<img src="/web/image/1143-62197fdb/3.webp" class="img img-fluid rounded" style="width: 100%; aspect-ratio: 1/1; object-fit: cover;" alt="APPETIZERS"/>
</div>
<h6 style="font-weight: 700;">APPETIZERS</h6>
<small class="text-muted">20 Items</small>
</div>
<div class="col-lg-2 col-md-4 col-6 text-center mb-4 category-item">
<div class="bg-white rounded p-1 shadow-sm mb-3 category-img" style="border: 2px solid transparent;">
<img src="/web/image/1145-5c5e2c76/4.webp" class="img img-fluid rounded" style="width: 100%; aspect-ratio: 1/1; object-fit: cover;" alt="CURRY"/>
</div>
<h6 style="font-weight: 700;">CURRY</h6>
<small class="text-muted">25 Items</small>
</div>
<div class="col-lg-2 col-md-4 col-6 text-center mb-4 category-item">
<div class="bg-white rounded p-1 shadow-sm mb-3 category-img" style="border: 2px solid transparent;">
<img src="/web/image/1147-469da4f8/5.webp" class="img img-fluid rounded" style="width: 100%; aspect-ratio: 1/1; object-fit: cover;" alt="DESSERTS"/>
</div>
<h6 style="font-weight: 700;">DESSERTS</h6>
<small class="text-muted">10 Items</small>
</div>
<div class="col-lg-2 col-md-4 col-6 text-center mb-4 category-item">
<div class="bg-white rounded p-1 shadow-sm mb-3 category-img" style="border: 2px solid transparent;">
<img src="/web/image/1149-1e98fb01/6.webp" class="img img-fluid rounded" style="width: 100%; aspect-ratio: 1/1; object-fit: cover;" alt="DOSA"/>
</div>
<h6 style="font-weight: 700;">DOSA/PAROTHA</h6>
<small class="text-muted">18 Items</small>
</div>
</div>
</div>
</section><section class="s_title o_colored_level pt64 pb0" data-vcss="001" data-snippet="s_title" data-name="Title" style="background-color: rgb(255, 255, 255); background-image: none;">
<div class="s_allow_columns container">
@ -163,16 +184,82 @@ At Chennora, we blend traditional Indian cooking techniques with the freshest lo
</ul>
</div>
</section><section data-snippet="s_dynamic_snippet_products" class="s_dynamic_snippet_products s_dynamic pt32 o_colored_level s_product_product_add_to_cart pb80 o_dynamic_empty" data-name="Products" style="background-color: rgb(255, 255, 255); background-image: none;" data-product-category-id="all" data-number-of-records="16" data-filter-id="1" data-template-key="website_sale.dynamic_filter_template_product_product_add_to_cart" data-carousel-interval="5000">
<div class="container o_not_editable">
<div class="css_non_editable_mode_hidden">
<div class="missing_option_warning alert alert-info rounded-0 fade show d-none d-print-none o_default_snippet_text">
Your Dynamic Snippet will be displayed here... This message is displayed because you did not provided both a filter and a template to use.<br/>
</section> <section class="s_popular_deals o_colored_level pt32 pb80" style="background-color: white;">
<div class="container">
<div class="row align-items-center">
<!-- Left Column -->
<div class="col-lg-4 mb-4">
<div class="d-flex align-items-center mb-4">
<img src="/web/image/1119-8a8e7ce7/chennora-card-1.webp" style="width: 70px; height: 70px; border-radius: 50%; object-fit: cover;" class="me-3 shadow-sm"/>
<div class="flex-grow-1 border-bottom border-dotted pb-2">
<div class="d-flex justify-content-between">
<h6 class="mb-0 fw-bold">Egg Biryani</h6>
<h6 class="mb-0" style="color: rgb(254, 205, 79);">$12.00</h6>
</div>
<small class="text-muted">Delicious egg biryani with spices</small>
</div>
</div>
<div class="d-flex align-items-center mb-4">
<img src="/web/image/1121-9b05e3f1/chennora-card-2.webp" style="width: 70px; height: 70px; border-radius: 50%; object-fit: cover;" class="me-3 shadow-sm"/>
<div class="flex-grow-1 border-bottom border-dotted pb-2">
<div class="d-flex justify-content-between">
<h6 class="mb-0 fw-bold">Masala Dosa</h6>
<h6 class="mb-0" style="color: rgb(254, 205, 79);">$10.00</h6>
</div>
<small class="text-muted">Crispy dosa with potato filling</small>
</div>
</div>
<div class="d-flex align-items-center mb-4">
<img src="/web/image/1120-614abfd2/chennora-card-3.webp" style="width: 70px; height: 70px; border-radius: 50%; object-fit: cover;" class="me-3 shadow-sm"/>
<div class="flex-grow-1 border-bottom border-dotted pb-2">
<div class="d-flex justify-content-between">
<h6 class="mb-0 fw-bold">Chicken Puffs</h6>
<h6 class="mb-0" style="color: rgb(254, 205, 79);">$5.00</h6>
</div>
<small class="text-muted">Flaky pastry with chicken</small>
</div>
</div>
</div>
<!-- Center Image -->
<div class="col-lg-4 text-center mb-4">
<img src="/dine360_theme_chennora/static/src/img/chen-banner-2.webp" class="img img-fluid rounded-circle shadow-lg o_animate o_anim_zoom_in" style="max-height: 380px; border: 5px solid #fff;" alt="Main Deal"/>
</div>
<!-- Right Column -->
<div class="col-lg-4 mb-4">
<div class="d-flex align-items-center mb-4">
<img src="/web/image/1141-88fd5340/2.webp" style="width: 70px; height: 70px; border-radius: 50%; object-fit: cover;" class="me-3 shadow-sm"/>
<div class="flex-grow-1 border-bottom border-dotted pb-2">
<div class="d-flex justify-content-between">
<h6 class="mb-0 fw-bold">Paneer Thali</h6>
<h6 class="mb-0" style="color: rgb(254, 205, 79);">$15.00</h6>
</div>
<small class="text-muted">Complete veg meal with paneer</small>
</div>
</div>
<div class="d-flex align-items-center mb-4">
<img src="/web/image/1143-62197fdb/3.webp" style="width: 70px; height: 70px; border-radius: 50%; object-fit: cover;" class="me-3 shadow-sm"/>
<div class="flex-grow-1 border-bottom border-dotted pb-2">
<div class="d-flex justify-content-between">
<h6 class="mb-0 fw-bold">Mutton Curry</h6>
<h6 class="mb-0" style="color: rgb(254, 205, 79);">$18.00</h6>
</div>
<small class="text-muted">Rich mutton gravy with spices</small>
</div>
</div>
<div class="d-flex align-items-center mb-4">
<img src="/web/image/1145-5c5e2c76/4.webp" style="width: 70px; height: 70px; border-radius: 50%; object-fit: cover;" class="me-3 shadow-sm"/>
<div class="flex-grow-1 border-bottom border-dotted pb-2">
<div class="d-flex justify-content-between">
<h6 class="mb-0 fw-bold">Sweet Corn Soup</h6>
<h6 class="mb-0" style="color: rgb(254, 205, 79);">$6.00</h6>
</div>
<small class="text-muted">Creamy soup with sweet corn</small>
</div>
</div>
</div>
<div class="dynamic_snippet_template"/>
</div>
</section>
</div>
</section>
<section class="s_quotes_carousel_wrapper o_colored_level oe_img_bg o_bg_img_center o_bg_img_origin_border_box" data-vxml="001" data-vcss="001" data-snippet="s_quotes_carousel" data-name="Quotes" style="background-image: url(&quot;/web/image/1162-ff0e896d/1-card.webp&quot;);" data-mimetype="image/webp" data-original-id="1155" data-original-src="/web/image/1155-9fc4b127/1-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412">
<div class="s_quotes_carousel s_carousel_default carousel slide o_cc o_cc2" data-bs-interval="10000" id="myCarousel1769251166498" style="background-image: none; position: relative;">

View File

@ -2,39 +2,39 @@ version: "3.8"
services:
db:
image: postgres:15
container_name: odoo_client1_db
container_name: odoo_client2_db
environment:
POSTGRES_DB: postgres
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo
volumes:
- client1_pgdata:/var/lib/postgresql/data
- client2_pgdata:/var/lib/postgresql/data
restart: always
odoo:
image: odoo:17.0
container_name: odoo_client1
container_name: odoo_client2
depends_on:
- db
ports:
- "10001:8069"
- "10002:8069"
environment:
HOST: db
USER: odoo
PASSWORD: odoo
LIST_DB: "True"
volumes:
- client1_odoo_data:/var/lib/odoo
- client2_odoo_data:/var/lib/odoo
- ./addons:/mnt/extra-addons
restart: always
volumes:
client1_pgdata:
client1_odoo_data:
client2_pgdata:
client2_odoo_data:
# backups:
# .\backup_db.ps1
# Team Members Restore
# cat d:\Odoo\backups\YOUR_BACKUP_FILE.sql | docker exec -i odoo_client1_db psql -U odoo -d postgres
# cat d:\Odoo\backups\YOUR_BACKUP_FILE.sql | docker exec -i odoo_client2_db psql -U odoo -d postgres

1
odoo-testing-addons Submodule

@ -0,0 +1 @@
Subproject commit b28e05b057fcebf0ef50e496ddc588e709325dd6