Alaguraj0361 b9d5617051 Add SaaS multi-tenant models and views for restaurant management
- Introduced `saas.plan` model to define subscription plans with limits and pricing.
- Created `saas.restaurant` model to manage restaurant tenants, including database provisioning and subscription management.
- Implemented views for managing SaaS plans and restaurant tenants, including tree and form views.
- Added security access rights for the new models.
- Developed a backup management view for database backups.
- Updated menu structure to include new SaaS management options.
- Added Docker and deployment configurations for PostgreSQL, Redis, and Odoo services.
- Included scaling guide and backup scripts for production environments.
- Enhanced theme with new images and layout adjustments.
2026-06-19 15:03:51 +05:30

204 lines
14 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="Shivasakthi_main_layout_new" inherit_id="website.layout" name="Shivasakthi Main Layout New" priority="50">
<!-- SEO and Favicon -->
<xpath expr="//head/*[1]" position="before">
<t t-if="not title">
<t t-if="not additional_title and main_object and 'name' in main_object">
<t t-set="additional_title" t-value="main_object.name"/>
</t>
<t t-set="default_title" t-translation="off" t-value="(additional_title + ' | ' if additional_title else '') + (website or res_company).name"/>
<t t-set="seo_object" t-value="seo_object or main_object"/>
<t t-if="seo_object and 'website_meta_title' in seo_object and seo_object.website_meta_title">
<t t-set="title" t-value="seo_object.website_meta_title"/>
</t>
<t t-else="">
<t t-set="title" t-value="default_title"/>
</t>
</t>
<t t-set="x_icon" t-value="'/dine360_theme_shivasakthi/static/description/icon.png'"/>
</xpath>
<xpath expr="//head/meta[last()]" position="after">
<meta name="generator" content="Odoo"/>
<t t-set="website_meta" t-value="seo_object and seo_object.get_website_meta() or {}"/>
<meta name="default_title" t-att-content="default_title" groups="website.group_website_designer"/>
<meta t-if="(main_object and 'website_indexed' in main_object and not main_object.website_indexed) or (website.domain and not website._is_indexable_url(request.httprequest.url_root))" name="robots" content="noindex"/>
<t t-set="seo_object" t-value="seo_object or main_object"/>
<t t-set="meta_description" t-value="seo_object and 'website_meta_description' in seo_object and seo_object.website_meta_description or website_meta_description or website_meta.get('meta_description', '')"/>
<t t-set="meta_keywords" t-value="seo_object and 'website_meta_keywords' in seo_object and seo_object.website_meta_keywords or website_meta_keywords"/>
<meta t-if="meta_description or editable" name="description" t-att-content="meta_description"/>
<meta t-if="meta_keywords or editable" name="keywords" t-att-content="meta_keywords"/>
<t t-if="seo_object">
<meta name="default_description" t-att-content="website_meta_description or website_meta.get('meta_description')" groups="website.group_website_designer"/>
<t t-set="opengraph_meta" t-value="website_meta.get('opengraph_meta')"/>
<t t-if="opengraph_meta">
<t t-foreach="opengraph_meta" t-as="property">
<t t-if="isinstance(opengraph_meta[property], list)">
<t t-foreach="opengraph_meta[property]" t-as="meta_content">
<meta t-att-property="property" t-att-content="meta_content"/>
</t>
</t>
<t t-else="">
<meta t-att-property="property" t-att-content="opengraph_meta[property]"/>
</t>
</t>
</t>
<t t-set="twitter_meta" t-value="website_meta.get('twitter_meta')"/>
<t t-if="opengraph_meta">
<t t-foreach="twitter_meta" t-as="t_meta">
<meta t-att-name="t_meta" t-att-content="twitter_meta[t_meta]"/>
</t>
</t>
</t>
<t t-if="request and request.is_frontend_multilang and website and website.is_public_user()">
<t t-set="alternate_languages" t-value="website._get_alternate_languages(canonical_params=canonical_params)"/>
<t t-foreach="alternate_languages" t-as="lg">
<link rel="alternate" t-att-hreflang="lg['hreflang']" t-att-href="lg['href']"/>
</t>
</t>
<link t-if="request and website and website.is_public_user()" rel="canonical" t-att-href="website._get_canonical_url(canonical_params=canonical_params)"/>
<link rel="preconnect" href="https://fonts.googleapis.com"/>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""/>
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&amp;family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&amp;display=swap" rel="stylesheet"/>
</xpath>
<!-- Custom Header Implementation -->
<xpath expr="//header" position="replace">
<header id="top" data-anchor="true" data-name="Header" class="o_header_fixed header_transparent_overlay">
<!-- Main Nav (Transparent, Logo Left, Menu Center, CTA Right) -->
<nav class="o_header_main_nav navbar navbar-expand-lg navbar-dark py-3 px-lg-5 px-3">
<div class="container-fluid">
<!-- Brand Logo on the left -->
<a class="navbar-brand py-0 d-flex align-items-center" href="/">
<img src="/dine360_theme_shivasakthi/static/src/img/shivasakthi_logo_new.png" class="img-fluid" style="max-height: 70px;" alt="Shiva Sakthi Restaurant"/>
</a>
<!-- Mobile Toggle -->
<button class="navbar-toggler border-0 ms-auto" type="button" data-bs-toggle="collapse" data-bs-target="#top_menu_collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="top_menu_collapse">
<!-- Center Menu Links -->
<ul class="navbar-nav mx-auto gap-lg-4 text-center mt-3 mt-lg-0">
<li class="nav-item"><a class="nav-link text-uppercase" href="/">Home</a></li>
<li class="nav-item"><a class="nav-link text-uppercase" href="/about">About Us</a></li>
<li class="nav-item"><a class="nav-link text-uppercase" href="/shop">Food Menu</a></li>
<li class="nav-item"><a class="nav-link text-uppercase" href="/blog">Blog</a></li>
<li class="nav-item"><a class="nav-link text-uppercase" href="/contactus">Contact</a></li>
</ul>
<!-- Right CTA Order Button and Cart -->
<div class="d-flex align-items-center justify-content-center gap-3 mt-3 mt-lg-0">
<t t-set="website_sale_order" t-value="website.sale_get_order()"/>
<a href="/shop/cart" class="nav-link o_wsale_shopping_cart position-relative d-inline-flex align-items-center me-2" title="My Cart">
<i class="fa fa-shopping-cart fs-3 text-white"></i>
<span class="badge rounded-pill bg-danger position-absolute top-0 start-100 translate-middle cart-badge"
t-if="website_sale_order and website_sale_order.cart_quantity &gt; 0"
t-esc="website_sale_order.cart_quantity"
style="font-size: 0.75rem; padding: 0.35em 0.6em; border: 2px solid #111;"/>
</a>
<a href="/shop" class="btn btn-order-now px-4 py-2 d-inline-flex align-items-center">
ORDER NOW <i class="fa fa-long-arrow-right ms-2"></i>
</a>
</div>
</div>
</div>
</nav>
</header>
</xpath>
</template>
<!-- Hidden Phone Snippet for Odoo internal use -->
<template id="Shivasakthi_header_phone_new" inherit_id="website.header_text_element" name="Shivasakthi Header Phone New" priority="60">
<xpath expr="/*" position="replace">
<div class="o_header_text_element d-none">
<span class="o_force_ltr">905-677-3555</span>
</div>
</xpath>
</template>
<template id="Shivasakthi_footer_new" inherit_id="website.layout" name="Shivasakthi Footer New" priority="50">
<xpath expr="//footer[@id='bottom']" position="replace">
<footer id="bottom" data-anchor="true" data-name="Footer" class="o_footer o_colored_level o_cc">
<div id="footer" class="oe_structure oe_structure_solo">
<section class="s_footer_image_match" style="background-color: #111418; color: #ffffff; padding: 80px 0 0 0; position: relative;">
<!-- Main Footer Middle Section -->
<div class="container main-footer-content pb-5">
<div class="row gx-lg-5">
<!-- Col 1: Brand -->
<div class="col-lg-4 col-md-6 mb-4">
<div class="footer-logo mb-4 d-flex align-items-center">
<img src="/dine360_theme_shivasakthi/static/src/img/shivasakthi_logo_new.png" alt="Shiva Sakthi Restaurant" style="height: 80px;"/>
</div>
<p class="footer-desc mb-4" style="font-size: 14px; line-height: 1.8; color: #dcdcdc;">
At Shiva Sakthi Restaurant, we bring you the best of South and North Indian cuisine, crafted with passion and authenticity. From our kitchen to your plate, every dish is a celebration of India's rich culinary heritage.
</p>
<div class="footer-social-boxes d-flex gap-3">
<a href="#" target="_blank" class="social-box-dark"><i class="fa fa-facebook"></i></a>
<a href="#" target="_blank" class="social-box-dark"><i class="fa fa-instagram"></i></a>
<a href="#" target="_blank" class="social-box-dark"><i class="fa fa-youtube-play"></i></a>
</div>
</div>
<!-- Col 2: Quick Links -->
<div class="col-lg-2 col-md-6 mb-4">
<h5 class="footer-column-title fw-bold text-uppercase mb-4" style="font-family: 'Bebas Neue', Impact, sans-serif; letter-spacing: 1px; font-size: 20px;">QUICK LINKS</h5>
<ul class="footer-links-list list-unstyled ps-0" style="font-size: 14px;">
<li class="mb-3"><a href="/" class="text-decoration-none text-white">Home</a></li>
<li class="mb-3"><a href="/about" class="text-decoration-none text-white">About</a></li>
<li class="mb-3"><a href="/menu" class="text-decoration-none text-white">Menu</a></li>
<li class="mb-3"><a href="/contactus" class="text-decoration-none text-white">Contact</a></li>
</ul>
</div>
<!-- Col 3: Contact Us -->
<div class="col-lg-3 col-md-6 mb-4">
<h5 class="footer-column-title fw-bold text-uppercase mb-4" style="font-family: 'Bebas Neue', Impact, sans-serif; letter-spacing: 1px; font-size: 20px;">CONTACT US</h5>
<div class="contact-info-list" style="font-size: 14px; line-height: 1.8; color: #dcdcdc;">
<p class="mb-3">7166 Airport Road, Mississauga<br/>Ontario.L4T 2H2, Canada</p>
<p class="mb-3">info@shivasakthi.ca</p>
<p class="mb-3">905-677-3555</p>
</div>
</div>
<!-- Col 4: Opening Hour -->
<div class="col-lg-3 col-md-6 mb-4">
<h5 class="footer-column-title fw-bold text-uppercase mb-4" style="font-family: 'Bebas Neue', Impact, sans-serif; letter-spacing: 1px; font-size: 20px;">OPENING HOUR</h5>
<div class="hours-list" style="font-size: 14px; line-height: 1.8;">
<p class="mb-2 text-white">Monday Friday: <span style="color: #ffb800;">11.30 am - 10.00 pm</span></p>
<p class="mb-0 text-white">Saturday, Sunday: <span style="color: #ffb800;">12.00 pm - 10.00 pm</span></p>
</div>
</div>
</div>
</div>
<!-- Copyright Bar -->
<div class="footer-copyright-bar" style="border-top: 1px solid rgba(255,255,255,0.05); padding: 20px 0;">
<div class="container text-center">
<p class="mb-0" style="font-size: 13px; color: #dcdcdc;">
Copyright 2026 © Shiva Sakthi Restaurant. Powered by <span style="color: #ffb800;">MetatronCube</span>. All Right Reserved.
</p>
</div>
</div>
<!-- Scroll to Top Button -->
<!-- <a href="#" class="scroll-to-top" style="position: absolute; right: 30px; bottom: 30px; background-color: #ffb800; color: #ffffff; width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; text-decoration: none; box-shadow: 0 4px 6px rgba(0,0,0,0.3);">
<i class="fa fa-arrow-up"></i>
</a> -->
</section>
</div>
</footer>
</xpath>
</template>
</data>
</odoo>