diff --git a/theme_eco_food/README.rst b/theme_eco_food/README.rst
new file mode 100644
index 000000000..a4379b524
--- /dev/null
+++ b/theme_eco_food/README.rst
@@ -0,0 +1,46 @@
+.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg
+ :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-3
+
+Theme Eco Life
+==============
+* Design Web Pages with Theme Eco Life
+
+Installation
+============
+ - www.odoo.com/documentation/17.0/setup/install.html
+ - Install our custom addon
+
+License
+-------
+General Public License, Version 3 (LGPL v3).
+(http://www.gnu.org/licenses/lgpl-3.0-standalone.html)
+
+Company
+-------
+* `Cybrosys Techno Solutions `__
+
+Credits
+-------
+* Developer: (V17) Fouzan M @cybrosys, Contact: odoo@cybrosys.com
+
+Contacts
+--------
+* Mail Contact : odoo@cybrosys.com
+* Website : https://cybrosys.com
+
+Bug Tracker
+-----------
+Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
+
+Maintainer
+==========
+.. image:: https://cybrosys.com/images/logo.png
+ :target: https://cybrosys.com
+This module is maintained by Cybrosys Technologies.
+
+For support and more information, please visit https://www.cybrosys.com
+
+Further information
+===================
+HTML Description: ``__
\ No newline at end of file
diff --git a/theme_eco_food/__init__.py b/theme_eco_food/__init__.py
new file mode 100644
index 000000000..50349d36a
--- /dev/null
+++ b/theme_eco_food/__init__.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import controllers
+from . import models
diff --git a/theme_eco_food/__manifest__.py b/theme_eco_food/__manifest__.py
new file mode 100644
index 000000000..ead251b93
--- /dev/null
+++ b/theme_eco_food/__manifest__.py
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+{
+ 'name': 'Theme Eco Food',
+ 'description': 'Theme Eco Food is an attractive and modern eCommerce'
+ ' Website theme',
+ 'summary': 'Design Web Pages with theme EcoLife',
+ 'category': 'Theme/eCommerce',
+ 'version': '17.0.1.0.0',
+ 'author': 'Cybrosys Techno Solutions',
+ 'company': 'Cybrosys Techno Solutions',
+ 'maintainer': 'Cybrosys Techno Solutions',
+ 'website': "https://www.cybrosys.com",
+ 'depends': ['website', 'website_sale', 'website_sale_wishlist', 'website_blog'],
+ 'data': [
+ 'data/best_seller_data.xml',
+ 'data/recently_added_data.xml',
+ 'data/featured_product_data.xml',
+ 'data/new_arrival_data.xml',
+ 'security/ir.model.access.csv',
+ 'views/shop_template.xml',
+ 'views/best_seller_views.xml',
+ 'views/recently_added_views.xml',
+ 'views/featured_product_views.xml',
+ 'views/new_arrival_views.xml',
+ 'views/footer_template.xml',
+ 'views/header_template.xml',
+ 'views/contact_template.xml',
+ 'views/checkout_template.xml',
+ 'views/testimonial_views.xml',
+ 'views/snippets/banner_template.xml',
+ 'views/snippets/best_seller_template.xml',
+ 'views/snippets/client_template.xml',
+ 'views/snippets/featured_product_template.xml',
+ 'views/snippets/new_arrival_template.xml',
+ 'views/snippets/recently_added_template.xml',
+ 'views/snippets/service_template.xml',
+ 'views/snippets/testimonial_template.xml',
+ 'views/snippets/website_ad_template.xml',
+ 'views/snippets/ad_template.xml',
+ 'views/snippets/snippet_templates.xml',
+ ],
+ 'assets': {
+ 'web.assets_frontend': [
+ 'theme_eco_food/static/src/css/animate.css',
+ 'theme_eco_food/static/src/xml/snippets/best_seller.xml',
+ 'theme_eco_food/static/src/xml/snippets/featured_products.xml',
+ 'theme_eco_food/static/src/xml/snippets/new_arrival_products.xml',
+ 'theme_eco_food/static/src/xml/snippets/recently_added.xml',
+ 'theme_eco_food/static/src/xml/snippets/testimonial.xml',
+ 'theme_eco_food/static/src/css/animate.min.css',
+ 'theme_eco_food/static/src/css/bootstrap-dropdownhover.css',
+ 'theme_eco_food/static/src/css/bootstrap-dropdownhover.min.css',
+ 'theme_eco_food/static/src/css/bootstrap-icons.css',
+ 'theme_eco_food/static/src/css/owl.carousel.min.css',
+ 'theme_eco_food/static/src/css/owl.theme.default.min.css',
+ 'https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css',
+ 'theme_eco_food/static/src/css/style.css',
+ 'theme_eco_food/static/src/js/owl.carousel.js',
+ 'theme_eco_food/static/src/js/owl.carousel.min.js',
+ 'theme_eco_food/static/src/js/script.js',
+ 'theme_eco_food/static/src/js/index.js',
+ 'theme_eco_food/static/src/js/new_arrivals.js',
+ 'theme_eco_food/static/src/js/best_seller.js',
+ 'theme_eco_food/static/src/js/featured_products.js',
+ 'theme_eco_food/static/src/js/recently_added.js',
+ 'theme_eco_food/static/src/js/testimonial.js',
+ 'theme_eco_food/static/src/js/website_sale.js',
+ 'theme_eco_food/static/src/js/custom.js',
+ ],
+ },
+ 'images': [
+ 'static/description/banner.jpg',
+ 'static/description/theme_screenshot.jpg',
+ ],
+ 'license': 'LGPL-3',
+ 'installable': True,
+ 'application': False,
+ 'auto_install': False,
+}
diff --git a/theme_eco_food/controllers/__init__.py b/theme_eco_food/controllers/__init__.py
new file mode 100644
index 000000000..d1429e0e5
--- /dev/null
+++ b/theme_eco_food/controllers/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import website_eco_food
+from . import website_sale
+from . import website_sale_wishlist
diff --git a/theme_eco_food/controllers/website_eco_food.py b/theme_eco_food/controllers/website_eco_food.py
new file mode 100644
index 000000000..abaec889d
--- /dev/null
+++ b/theme_eco_food/controllers/website_eco_food.py
@@ -0,0 +1,132 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import http
+from odoo.http import request
+
+
+class WebsiteEcoFood(http.Controller):
+ """ Class for website to add extra functions"""
+
+ @http.route('/get_best_seller', auth="public", type='json')
+ def get_best_seller(self):
+ """this function is used to retrieve the best-selling product"""
+ products = request.env.ref(
+ 'theme_eco_food.best_seller_product').product_tmpl_ids.sorted(
+ key=lambda x: x.sales_count, reverse=True)[:10]
+ best_seller = [{'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products]
+ return best_seller
+
+ @http.route('/get_featured_products', auth="public", type='json')
+ def get_featured_products(self):
+ """this function is used to retrieve featured products"""
+ products = request.env.ref(
+ 'theme_eco_food.featured_product').product_tmpl_ids.sorted(
+ key=lambda x: x.id, reverse=True)[:8]
+ values = {
+ f'slide{i + 1}': [{'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products[i * 4:(i + 1) * 4]]
+ for i in range((len(products) + 3) // 4)
+ }
+ return values
+
+ @http.route('/get_recently_added_products', auth="public", type='json')
+ def get_recently_added_products(self):
+ """this function will return the most recently added products."""
+ products = request.env.ref(
+ 'theme_eco_food.recently_added_product').product_tmpl_ids.sorted(
+ key=lambda x: x.id, reverse=True)[:16]
+ values = {
+ f'slide{i + 1}': [{'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products[i * 8:(i + 1) * 8]]
+ for i in range((len(products) + 7) // 8)
+ }
+ return values
+
+ @http.route('/get_new_arrivals', auth="public", type='json')
+ def get_new_arrivals(self):
+ """this function is used to retrieve new arrival products"""
+ products = request.env.ref(
+ 'theme_eco_food.new_arrival_product').product_tmpl_ids.sorted(
+ key=lambda x: x.id, reverse=True)[:16]
+ values = [{
+ 'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products]
+ return values
+
+ @http.route('/get_testimonials', auth="public", type='json')
+ def get_testimonials(self):
+ """this function is used to retrieve testimonials.py"""
+ testimonials = request.env['ecofood.testimonial'].search([]).sorted(
+ key=lambda x: x.id, reverse=True)[:16]
+ values = {
+ f'slide{i + 1}': [{'id': record.id,
+ 'name': record.partner_id.name,
+ 'email': record.partner_id.email,
+ 'review': record.review
+ } for record in testimonials[i * 2:(i + 1) * 2]]
+ for i in range((len(testimonials) + 1) // 2)
+ }
+ return values
+
+ @http.route('/subscribe_newsletter', auth='public', type='json')
+ def subscribe_newsletter(self, **kw):
+ """ To save email to newsletter mail list"""
+ if request.env['mailing.contact'].sudo().search([
+ ("email", "=", kw.get("email")),
+ ("list_ids", "in",
+ [request.env.ref('mass_mailing.mailing_list_data').id])]):
+ return False
+ elif request.env.user._is_public():
+ visitor_sudo = (request.env['website.visitor'].sudo()
+ ._get_visitor_from_request())
+ name = visitor_sudo.display_name if visitor_sudo else \
+ "Website Visitor"
+ else:
+ name = request.env.user.partner_id.name
+ request.env['mailing.contact'].sudo().create({
+ "name": name,
+ "email": kw.get('email'),
+ "list_ids": [request.env.ref(
+ 'mass_mailing.mailing_list_data').id]
+ })
+ return True
diff --git a/theme_eco_food/controllers/website_sale.py b/theme_eco_food/controllers/website_sale.py
new file mode 100644
index 000000000..e6c9f1557
--- /dev/null
+++ b/theme_eco_food/controllers/website_sale.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import http
+from odoo.http import request
+from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale
+from odoo.tools import lazy
+
+
+class EcoFoodWebsiteSale(WebsiteSale):
+ """This function helps to override the functionalities of a website shop"""
+
+ @http.route()
+ def shop(self, **post):
+ """this function is used to set products based on selected category on
+ the category snippet option"""
+ result = super().shop(**post)
+ page = post.get('page', 0)
+ post.pop('page', None)
+ search_product = result.qcontext['search_product']
+ search_product = request.env['product.template'].sudo().search([
+ ('id', 'in', search_product.ids),
+ ('selected_att', '=', True)
+ ])
+ if search_product:
+ product_count = len(search_product)
+ ppg = result.qcontext['ppg']
+ ppr = result.qcontext['ppr']
+ url = '/shop'
+ website = request.env['website'].get_current_website()
+ pager = website.pager(url=url, total=product_count, page=page,
+ step=ppg, url_args=post)
+ offset = pager['offset']
+ products = search_product[offset:offset + ppg]
+ result.qcontext['search_product'] = search_product
+ result.qcontext['search_count'] = product_count
+ result.qcontext['pager'] = pager
+ result.qcontext['products'] = products
+ result.qcontext['bins'] = lazy(
+ lambda: TableCompute().process(products, ppg, ppr))
+ if products:
+ result.qcontext['attributes'] = lazy(
+ lambda: request.env['product.attribute'].search([
+ ('product_tmpl_ids', 'in', search_product.ids),
+ ('visibility', '=', 'visible')]))
+ return result
diff --git a/theme_eco_food/controllers/website_sale_wishlist.py b/theme_eco_food/controllers/website_sale_wishlist.py
new file mode 100644
index 000000000..cdb49bd47
--- /dev/null
+++ b/theme_eco_food/controllers/website_sale_wishlist.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import http
+from odoo.http import request
+from odoo.addons.website_sale.controllers.main import WebsiteSale
+
+
+class WebsiteSaleWishlist(WebsiteSale):
+ """This function helps to override the functionalities of a wishlist"""
+
+ @http.route()
+ def add_to_wishlist(self, product_id, **kw):
+ """Function to check product is exits in wishlist list or not"""
+ if kw.get('is_template'):
+ product_id = request.env['product.template'].sudo().browse(
+ product_id)._get_first_possible_variant_id()
+ wish = request.env['product.wishlist'].sudo().search([
+ ('product_id', '=', product_id)
+ ])
+ return False if wish else super().add_to_wishlist(product_id, **kw)
diff --git a/theme_eco_food/data/best_seller_data.xml b/theme_eco_food/data/best_seller_data.xml
new file mode 100644
index 000000000..69f7b9314
--- /dev/null
+++ b/theme_eco_food/data/best_seller_data.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ Best Seller
+
+
+
\ No newline at end of file
diff --git a/theme_eco_food/data/featured_product_data.xml b/theme_eco_food/data/featured_product_data.xml
new file mode 100644
index 000000000..5b2d2d857
--- /dev/null
+++ b/theme_eco_food/data/featured_product_data.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ Featured Product
+
+
+
\ No newline at end of file
diff --git a/theme_eco_food/data/new_arrival_data.xml b/theme_eco_food/data/new_arrival_data.xml
new file mode 100644
index 000000000..de968d164
--- /dev/null
+++ b/theme_eco_food/data/new_arrival_data.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ New Arrival
+
+
+
\ No newline at end of file
diff --git a/theme_eco_food/data/recently_added_data.xml b/theme_eco_food/data/recently_added_data.xml
new file mode 100644
index 000000000..aa48690a4
--- /dev/null
+++ b/theme_eco_food/data/recently_added_data.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ Recently Added Products
+
+
+
\ No newline at end of file
diff --git a/theme_eco_food/doc/RELEASE_NOTES.md b/theme_eco_food/doc/RELEASE_NOTES.md
new file mode 100644
index 000000000..64de86cac
--- /dev/null
+++ b/theme_eco_food/doc/RELEASE_NOTES.md
@@ -0,0 +1,6 @@
+## Module
+
+#### 10.01.2024
+#### Version 17.0.1.0.0
+#### ADD
+- Initial commit for Theme Eco Life
\ No newline at end of file
diff --git a/theme_eco_food/models/__init__.py b/theme_eco_food/models/__init__.py
new file mode 100644
index 000000000..125d77a6a
--- /dev/null
+++ b/theme_eco_food/models/__init__.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import best_seller
+from . import featured_products
+from . import new_arrival
+from . import product_template
+from . import recently_added
+from . import testimonial
diff --git a/theme_eco_food/models/best_seller.py b/theme_eco_food/models/best_seller.py
new file mode 100644
index 000000000..619501a22
--- /dev/null
+++ b/theme_eco_food/models/best_seller.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class BestSeller(models.Model):
+ """This is used to set the Best sellers and their corresponding products for
+ the snippet"""
+ _name = "best.seller"
+ _description = "Best Seller"
+
+ name = fields.Char(required=True)
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string="Best-Selling Products",
+ help="Choose best selling products")
diff --git a/theme_eco_food/models/featured_products.py b/theme_eco_food/models/featured_products.py
new file mode 100644
index 000000000..4cbbca26f
--- /dev/null
+++ b/theme_eco_food/models/featured_products.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class FeaturedProducts(models.Model):
+ """model to manage featured products."""
+ _name = "featured.products"
+ _description = "Featured Products"
+
+ name = fields.Char(required=True)
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string="Featured Products",
+ help="Choose featured products")
diff --git a/theme_eco_food/models/new_arrival.py b/theme_eco_food/models/new_arrival.py
new file mode 100644
index 000000000..82fbf88db
--- /dev/null
+++ b/theme_eco_food/models/new_arrival.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class NewArrival(models.Model):
+ """model to manage new arrival products"""
+ _name = "new.arrival"
+ _description = "New Arrival Products"
+
+ name = fields.Char(required=True)
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string="New Arrival Products",
+ help="Choose new arrival products")
diff --git a/theme_eco_food/models/product_template.py b/theme_eco_food/models/product_template.py
new file mode 100644
index 000000000..3ab758c01
--- /dev/null
+++ b/theme_eco_food/models/product_template.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import api, fields, models
+
+
+class ProductTemplate(models.Model):
+ """ This model extends the 'product.template' model to add additional
+ functionality"""
+ _inherit = 'product.template'
+
+ selected_att = fields.Boolean(string='Product Selection',
+ help='to select multiple category')
+
+ @api.model
+ def get_product_selections(self, data):
+ """Function to set the value of selected_att based on the selected view
+ type in the shop page."""
+ for record in self.search([]):
+ record.selected_att = data['all']
+ if not data['all'] and data['category']:
+ for rec in record.public_categ_ids:
+ if rec.id in data['category']:
+ record.selected_att = True
diff --git a/theme_eco_food/models/recently_added.py b/theme_eco_food/models/recently_added.py
new file mode 100644
index 000000000..d0807e80a
--- /dev/null
+++ b/theme_eco_food/models/recently_added.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class RecentlyAdded(models.Model):
+ """model to manage recently added product"""
+ _name = "recently.added"
+ _description = "Recently Added Products"
+
+ name = fields.Char(required=True)
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string='Recently Added Products',
+ help="Choose recently added products")
diff --git a/theme_eco_food/models/testimonial.py b/theme_eco_food/models/testimonial.py
new file mode 100644
index 000000000..d884237b8
--- /dev/null
+++ b/theme_eco_food/models/testimonial.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2024-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class Testimonial(models.Model):
+ """model to manage testimonials.py"""
+ _name = 'ecofood.testimonial'
+ _description = 'Testimonials'
+ _rec_name = 'partner_id'
+
+ partner_id = fields.Many2one('res.partner', string='Customer',
+ required=True)
+ review = fields.Text(help='Add your review here')
diff --git a/theme_eco_food/security/ir.model.access.csv b/theme_eco_food/security/ir.model.access.csv
new file mode 100644
index 000000000..d4fdb086b
--- /dev/null
+++ b/theme_eco_food/security/ir.model.access.csv
@@ -0,0 +1,6 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_best_seller,best.seller,model_best_seller,base.group_user,1,1,1,1
+access_featured_products,featured.products,model_featured_products,base.group_user,1,1,1,1
+access_recently_added,recently.added,model_recently_added,base.group_user,1,1,1,1
+access_new_arrival,new.arrival,model_new_arrival,base.group_user,1,1,1,1
+access_testimonial,ecofood.testimonial,model_ecofood_testimonial,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/theme_eco_food/static/description/assets/all_screens.png b/theme_eco_food/static/description/assets/all_screens.png
new file mode 100644
index 000000000..47b5d9a18
Binary files /dev/null and b/theme_eco_food/static/description/assets/all_screens.png differ
diff --git a/theme_eco_food/static/description/assets/easily-access-menu.gif b/theme_eco_food/static/description/assets/easily-access-menu.gif
new file mode 100644
index 000000000..08340f307
Binary files /dev/null and b/theme_eco_food/static/description/assets/easily-access-menu.gif differ
diff --git a/theme_eco_food/static/description/assets/hero.gif b/theme_eco_food/static/description/assets/hero.gif
new file mode 100644
index 000000000..03ff24bc4
Binary files /dev/null and b/theme_eco_food/static/description/assets/hero.gif differ
diff --git a/theme_eco_food/static/description/assets/icons/check.png b/theme_eco_food/static/description/assets/icons/check.png
new file mode 100644
index 000000000..c8e85f51d
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/check.png differ
diff --git a/theme_eco_food/static/description/assets/icons/chevron.png b/theme_eco_food/static/description/assets/icons/chevron.png
new file mode 100644
index 000000000..2089293d6
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/chevron.png differ
diff --git a/theme_eco_food/static/description/assets/icons/cogs.png b/theme_eco_food/static/description/assets/icons/cogs.png
new file mode 100644
index 000000000..95d0bad62
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/cogs.png differ
diff --git a/theme_eco_food/static/description/assets/icons/consultation.png b/theme_eco_food/static/description/assets/icons/consultation.png
new file mode 100644
index 000000000..8319d4baa
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/consultation.png differ
diff --git a/theme_eco_food/static/description/assets/icons/ecom-black.png b/theme_eco_food/static/description/assets/icons/ecom-black.png
new file mode 100644
index 000000000..a9385ff13
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/ecom-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/education-black.png b/theme_eco_food/static/description/assets/icons/education-black.png
new file mode 100644
index 000000000..3eb09b27b
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/education-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/hotel-black.png b/theme_eco_food/static/description/assets/icons/hotel-black.png
new file mode 100644
index 000000000..130f613be
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/hotel-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/license.png b/theme_eco_food/static/description/assets/icons/license.png
new file mode 100644
index 000000000..a5869797e
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/license.png differ
diff --git a/theme_eco_food/static/description/assets/icons/lifebuoy.png b/theme_eco_food/static/description/assets/icons/lifebuoy.png
new file mode 100644
index 000000000..658d56ccc
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/lifebuoy.png differ
diff --git a/theme_eco_food/static/description/assets/icons/manufacturing-black.png b/theme_eco_food/static/description/assets/icons/manufacturing-black.png
new file mode 100644
index 000000000..697eb0e9f
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/manufacturing-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/pos-black.png b/theme_eco_food/static/description/assets/icons/pos-black.png
new file mode 100644
index 000000000..97c0f90c1
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/pos-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/puzzle.png b/theme_eco_food/static/description/assets/icons/puzzle.png
new file mode 100644
index 000000000..65cf854e7
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/puzzle.png differ
diff --git a/theme_eco_food/static/description/assets/icons/restaurant-black.png b/theme_eco_food/static/description/assets/icons/restaurant-black.png
new file mode 100644
index 000000000..4a35eb939
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/restaurant-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/service-black.png b/theme_eco_food/static/description/assets/icons/service-black.png
new file mode 100644
index 000000000..301ab51cb
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/service-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/trading-black.png b/theme_eco_food/static/description/assets/icons/trading-black.png
new file mode 100644
index 000000000..9398ba2f1
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/trading-black.png differ
diff --git a/theme_eco_food/static/description/assets/icons/training.png b/theme_eco_food/static/description/assets/icons/training.png
new file mode 100644
index 000000000..884ca024d
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/training.png differ
diff --git a/theme_eco_food/static/description/assets/icons/update.png b/theme_eco_food/static/description/assets/icons/update.png
new file mode 100644
index 000000000..ecbc5a01a
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/update.png differ
diff --git a/theme_eco_food/static/description/assets/icons/user.png b/theme_eco_food/static/description/assets/icons/user.png
new file mode 100644
index 000000000..6ffb23d9f
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/user.png differ
diff --git a/theme_eco_food/static/description/assets/icons/wrench.png b/theme_eco_food/static/description/assets/icons/wrench.png
new file mode 100644
index 000000000..6c04dea0f
Binary files /dev/null and b/theme_eco_food/static/description/assets/icons/wrench.png differ
diff --git a/theme_eco_food/static/description/assets/logo.png b/theme_eco_food/static/description/assets/logo.png
new file mode 100644
index 000000000..4e19a9e29
Binary files /dev/null and b/theme_eco_food/static/description/assets/logo.png differ
diff --git a/theme_eco_food/static/description/assets/menu_focus.png b/theme_eco_food/static/description/assets/menu_focus.png
new file mode 100644
index 000000000..7c8a93427
Binary files /dev/null and b/theme_eco_food/static/description/assets/menu_focus.png differ
diff --git a/theme_eco_food/static/description/assets/responsive.jpg b/theme_eco_food/static/description/assets/responsive.jpg
new file mode 100644
index 000000000..0c6354b8d
Binary files /dev/null and b/theme_eco_food/static/description/assets/responsive.jpg differ
diff --git a/theme_eco_food/static/description/assets/screenshots/1.png b/theme_eco_food/static/description/assets/screenshots/1.png
new file mode 100644
index 000000000..84f11ed37
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/1.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/2.png b/theme_eco_food/static/description/assets/screenshots/2.png
new file mode 100644
index 000000000..f1275d823
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/2.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/3.png b/theme_eco_food/static/description/assets/screenshots/3.png
new file mode 100644
index 000000000..5b675f3b4
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/3.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/4.png b/theme_eco_food/static/description/assets/screenshots/4.png
new file mode 100644
index 000000000..8d59c42ea
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/4.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/5.png b/theme_eco_food/static/description/assets/screenshots/5.png
new file mode 100644
index 000000000..11595e3fe
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/5.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/6.png b/theme_eco_food/static/description/assets/screenshots/6.png
new file mode 100644
index 000000000..10d9afc97
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/6.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/7.png b/theme_eco_food/static/description/assets/screenshots/7.png
new file mode 100644
index 000000000..cdf29d41c
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/7.png differ
diff --git a/theme_eco_food/static/description/assets/screenshots/8.png b/theme_eco_food/static/description/assets/screenshots/8.png
new file mode 100644
index 000000000..78738666f
Binary files /dev/null and b/theme_eco_food/static/description/assets/screenshots/8.png differ
diff --git a/theme_eco_food/static/description/banner.jpg b/theme_eco_food/static/description/banner.jpg
new file mode 100644
index 000000000..46fbc935a
Binary files /dev/null and b/theme_eco_food/static/description/banner.jpg differ
diff --git a/theme_eco_food/static/description/icon.png b/theme_eco_food/static/description/icon.png
new file mode 100644
index 000000000..5d4b46798
Binary files /dev/null and b/theme_eco_food/static/description/icon.png differ
diff --git a/theme_eco_food/static/description/index.html b/theme_eco_food/static/description/index.html
new file mode 100644
index 000000000..d8d99eefa
--- /dev/null
+++ b/theme_eco_food/static/description/index.html
@@ -0,0 +1,728 @@
+
+
+
+
+
+ Theme Eco Food
+
+
Minimalist and Elegant Frontend
+ Theme for Odoo 17
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Eco Life V17 Gives You a Fully Modified View with a Full Screen Display.
+ This is a Minimalist and Elegant Frontend Theme for Odoo 17.
+ This Theme Will Change Your Old Experience to a New Experience With Odoo.
+ It is a Perfect Choice for Your Odoo Frontend and an Attractive Theme for Your Odoo 17.
+ It will Give You an attractive header with details on cart, wishlist, pricelist etc.
+ Using this theme you can customize your product card with features like add to cart, add to wishlist,
+ rating and all in a new outlook. This will change your contact us, cart, address and payment page to
+ A Fully Modified View.
+
+
+
+
+ Please make sure that you install
+ all
+ your apps prior to the installation of this theme.
+
+
+
+
+
+
+
+
+
+
+
+ Features
+
+
+
+
+
+
+
+
+
+
+
+ New
+
+
Fully Responsive Layout
+
+ Now take advantage of everything your dashboard has to offer even on the go. Our design are
+ now
+ fully responsive enabling you to view and manage everything from the comfort of your mobile
+ device. Everything
+ has been designed in a meticulous fashion.
+
+
+
+
Fully responsive
+
+
+
+
Fits perfectly to all screen sizes
+
+
+
+
+
+
+
+
+
+
+
Shop View
+
+ The Eco Life Theme V17 Gives You a Fully Modified Shop View.
+ The product card gives a Pleasant Experience And an Extraordinary Design
+ To Your Shop page Making The product cards Look Great.
+ It will Give You a Clean Layout with the New Outlook to your product card with
+ add to cart,add to wishlist, rating, etc in a new style.
+
+
+
+
+
+
Modified Font
+
+
+
+
+
New Color Combination
+
+
+
+
+
Full Screen View
+
+
+
+
+
+
+
Hover Effect
+
+
+
+
+
Clean Layout
+
+
+
+
+
New label at the top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cart page
+
+ The All new Eco Life Theme V17 Gives You The Fully Modified Cart View and This Table Design
+ is Also Have Awesome Design and it Gives You More Beauty for Your Odoo Frontend.
+ It will Give You a Clean Layout with the New Color Combination and a Modified Font.
+
+
+
+
+
+
Modified Table Style
+
+
+
+
+
New Color Combination
+
+
+
+
+
Shows discount percentage and discounted price
+
+
+
+
+
+
+
Buttons with New Colors
+
+
+
+
Modified Font
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Contact Us Page
+
+ Eco Life Theme Gives You The Fully Modified Contact View with a Full Screen Experience. It will
+ Give You a Clean Layout with the New OutLook
+ and a Modified Font.
+
+
+
+
+
+
Modified Style
+
+
+
+
+
Full Screen View
+
+
+
+
+
+
+
New Looks for Button
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Overview
+
+ Eco Life Theme V17 is an Attractive Theme for Your Odoo 17.
+ This Theme Will Change Improve Your Experience With Odoo.
+ This is a Minimalist and Elegant Frontend Theme for Odoo 17 And Can Offer a Perfect Choice
+ for
+ Your Odoo Frontend.
+