Browse Source

Oct 30: [ADD] Initial commit 'theme_boec'

pull/346/head
Cybrosys Technologies 6 months ago
parent
commit
2279e58fa0
  1. 46
      theme_boec/README.rst
  2. 23
      theme_boec/__init__.py
  3. 89
      theme_boec/__manifest__.py
  4. 23
      theme_boec/controllers/__init__.py
  5. 298
      theme_boec/controllers/brand_filter_controller.py
  6. 60
      theme_boec/controllers/product_snippets.py
  7. 9
      theme_boec/data/boec_config_data.xml
  8. 6
      theme_boec/doc/RELEASE_NOTES.md
  9. 26
      theme_boec/models/__init__.py
  10. 37
      theme_boec/models/boec_config.py
  11. 37
      theme_boec/models/product_brand.py
  12. 44
      theme_boec/models/product_template.py
  13. 54
      theme_boec/models/theme_utils.py
  14. 31
      theme_boec/models/website.py
  15. 3
      theme_boec/security/ir.model.access.csv
  16. BIN
      theme_boec/static/description/assets/icons/check.png
  17. BIN
      theme_boec/static/description/assets/icons/chevron.png
  18. BIN
      theme_boec/static/description/assets/icons/cogs.png
  19. BIN
      theme_boec/static/description/assets/icons/consultation.png
  20. BIN
      theme_boec/static/description/assets/icons/ecom-black.png
  21. BIN
      theme_boec/static/description/assets/icons/education-black.png
  22. BIN
      theme_boec/static/description/assets/icons/hotel-black.png
  23. BIN
      theme_boec/static/description/assets/icons/license.png
  24. BIN
      theme_boec/static/description/assets/icons/lifebuoy.png
  25. BIN
      theme_boec/static/description/assets/icons/manufacturing-black.png
  26. BIN
      theme_boec/static/description/assets/icons/pos-black.png
  27. BIN
      theme_boec/static/description/assets/icons/puzzle.png
  28. BIN
      theme_boec/static/description/assets/icons/restaurant-black.png
  29. BIN
      theme_boec/static/description/assets/icons/service-black.png
  30. BIN
      theme_boec/static/description/assets/icons/trading-black.png
  31. BIN
      theme_boec/static/description/assets/icons/training.png
  32. BIN
      theme_boec/static/description/assets/icons/update.png
  33. BIN
      theme_boec/static/description/assets/icons/user.png
  34. BIN
      theme_boec/static/description/assets/icons/wrench.png
  35. BIN
      theme_boec/static/description/assets/misc/categories.png
  36. BIN
      theme_boec/static/description/assets/misc/check-box.png
  37. BIN
      theme_boec/static/description/assets/misc/compass.png
  38. BIN
      theme_boec/static/description/assets/misc/corporate.png
  39. BIN
      theme_boec/static/description/assets/misc/customer-support.png
  40. BIN
      theme_boec/static/description/assets/misc/cybrosys-logo.png
  41. BIN
      theme_boec/static/description/assets/misc/features.png
  42. BIN
      theme_boec/static/description/assets/misc/logo.png
  43. BIN
      theme_boec/static/description/assets/misc/pictures.png
  44. BIN
      theme_boec/static/description/assets/misc/pie-chart.png
  45. BIN
      theme_boec/static/description/assets/misc/right-arrow.png
  46. BIN
      theme_boec/static/description/assets/misc/star.png
  47. BIN
      theme_boec/static/description/assets/misc/support.png
  48. BIN
      theme_boec/static/description/assets/misc/whatsapp.png
  49. BIN
      theme_boec/static/description/assets/modules/1.png
  50. BIN
      theme_boec/static/description/assets/modules/2.png
  51. BIN
      theme_boec/static/description/assets/modules/3.png
  52. BIN
      theme_boec/static/description/assets/modules/4.png
  53. BIN
      theme_boec/static/description/assets/modules/5.gif
  54. BIN
      theme_boec/static/description/assets/modules/6.png
  55. BIN
      theme_boec/static/description/banner.png
  56. BIN
      theme_boec/static/description/icon.png
  57. BIN
      theme_boec/static/description/images/1.jpg
  58. BIN
      theme_boec/static/description/images/2.jpg
  59. BIN
      theme_boec/static/description/images/3.jpg
  60. BIN
      theme_boec/static/description/images/4.jpg
  61. BIN
      theme_boec/static/description/images/5.jpg
  62. BIN
      theme_boec/static/description/images/6.jpg
  63. BIN
      theme_boec/static/description/images/Cybrosys R.png
  64. BIN
      theme_boec/static/description/images/Cybrosys.png
  65. BIN
      theme_boec/static/description/images/Poster-modal.psd
  66. BIN
      theme_boec/static/description/images/banner.png
  67. BIN
      theme_boec/static/description/images/boec_deal.png
  68. BIN
      theme_boec/static/description/images/boec_hot_sales.png
  69. BIN
      theme_boec/static/description/images/capture (1).png
  70. BIN
      theme_boec/static/description/images/check.png
  71. BIN
      theme_boec/static/description/images/chevron.png
  72. BIN
      theme_boec/static/description/images/cogs.png
  73. BIN
      theme_boec/static/description/images/consultation.png
  74. BIN
      theme_boec/static/description/images/cybro-logo-oca-no-text.png
  75. BIN
      theme_boec/static/description/images/cybro-logo-oca.png
  76. BIN
      theme_boec/static/description/images/demo-1.png
  77. BIN
      theme_boec/static/description/images/demo-2.jpg
  78. BIN
      theme_boec/static/description/images/demo-3.jpg
  79. BIN
      theme_boec/static/description/images/demo-4.jpg
  80. BIN
      theme_boec/static/description/images/demo-5.jpg
  81. BIN
      theme_boec/static/description/images/ecom-black.png
  82. BIN
      theme_boec/static/description/images/education-black.png
  83. 33
      theme_boec/static/description/images/email.svg
  84. BIN
      theme_boec/static/description/images/hero.png
  85. BIN
      theme_boec/static/description/images/hotel-black.png
  86. BIN
      theme_boec/static/description/images/laptop-screenshots.jpg
  87. BIN
      theme_boec/static/description/images/license.png
  88. BIN
      theme_boec/static/description/images/lifebuoy.png
  89. BIN
      theme_boec/static/description/images/manufacturing-black.png
  90. BIN
      theme_boec/static/description/images/new_arrivals.jpg
  91. BIN
      theme_boec/static/description/images/phone-screenshots.jpg
  92. 3
      theme_boec/static/description/images/phone.svg
  93. BIN
      theme_boec/static/description/images/photo-capture.png
  94. BIN
      theme_boec/static/description/images/pngwing.jpg
  95. BIN
      theme_boec/static/description/images/pos-black.png
  96. BIN
      theme_boec/static/description/images/poster.psd
  97. BIN
      theme_boec/static/description/images/puzzle.png
  98. BIN
      theme_boec/static/description/images/restaurant-black.png
  99. BIN
      theme_boec/static/description/images/service-black.png
  100. 9
      theme_boec/static/description/images/star (1) 2.svg

46
theme_boec/README.rst

@ -0,0 +1,46 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Theme Boec
=========================
* Attractive and modern eCommerce Website theme for Odoo 18
Configuration
=============
* No need of additional configuration.
License
-------
Affero General Public License, Version 3 (AGPL-3).
(https://www.gnu.org/licenses/agpl-3.0.en.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
=======
* Developer: (V18) Fouzan M, 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 `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

23
theme_boec/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models
from . import controllers

89
theme_boec/__manifest__.py

@ -0,0 +1,89 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'Theme Boec',
'version': '18.0.1.0.0',
'category': 'Theme/eCommerce',
'summary': "Theme Boec is an attractive and modern eCommerce Website theme",
'description': "Theme Boec is new kind of Theme.The theme is very "
"user-friendly and suitable for your eCommerce website "
"with blog",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['website_blog', 'website_sale_wishlist', 'website_sale',
'website_sale_comparison'],
'data': [
'security/ir.model.access.csv',
'data/boec_config_data.xml',
'views/about.xml',
'views/blog_templates.xml',
'views/blog_preview_templates.xml',
'views/boec_config_views.xml',
'views/cart_templates.xml',
'views/contact_us_templates.xml',
'views/footer_templates.xml',
'views/header_templates.xml',
'views/layout_templates.xml',
'views/page_top_templates.xml',
'views/product_brand_views.xml',
'views/product_template_views.xml',
'views/product_view_templates.xml',
'views/shop_templates.xml',
'views/sidebar_shop_templates.xml',
'views/snippets/banner.xml',
'views/snippets/blog_latest.xml',
'views/snippets/deal_week.xml',
'views/snippets/demo_product.xml',
'views/snippets/insta_feed.xml',
'views/snippets/product_tab.xml',
'views/snippets/product_tab_demo.xml',
],
'assets': {
'web.assets_frontend': [
'theme_boec/static/src/js/sale_utils.js',
"/theme_boec/static/src/css/style.css",
"/theme_boec/static/src/css/style.css.map",
"/theme_boec/static/src/css/style.scss",
"/theme_boec/static/src/css/owl_carousel_min.css",
"/theme_boec/static/src/css/owl_theme_default_min.css",
"/theme_boec/static/src/js/owl.carousel.js",
"/theme_boec/static/src/js/owl.carousel.min.js",
"/theme_boec/static/src/js/jquery.countdown.min.js",
'/theme_boec/static/src/xml/deal_week_content.xml',
'/theme_boec/static/src/xml/product_tab_content.xml',
"/theme_boec/static/src/js/deal_week.js",
"/theme_boec/static/src/js/product_tab.js",
"/theme_boec/static/src/js/custom.js",
'https://cdn.jsdelivr.net/npm/material-icons@1.13.12/iconfont/material-icons.min.css',
],
},
'images': [
'static/description/banner.png',
'static/description/theme_screenshot.jpg',
],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

23
theme_boec/controllers/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import brand_filter_controller
from . import product_snippets

298
theme_boec/controllers/brand_filter_controller.py

@ -0,0 +1,298 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from datetime import datetime
from werkzeug.exceptions import NotFound
from odoo import fields, http
from odoo.http import request
from odoo.addons.website.models.ir_http import sitemap_qs2dom
from odoo.addons.website.controllers.main import QueryURL
from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale
from odoo.tools import float_round, groupby, lazy, SQL
from odoo.osv import expression
class ProductBrand(WebsiteSale):
def sitemap_shop(env, rule, qs):
"""Required function for shop"""
if not qs or qs.lower() in '/shop':
yield {'loc': '/shop'}
Category = env['product.public.category']
dom = sitemap_qs2dom(qs, '/shop/category', Category._rec_name)
dom += env['website'].get_current_website().website_domain()
for cat in Category.search(dom):
loc = '/shop/category/%s' % request.env['ir.http']._slug(cat)
if not qs or qs.lower() in loc:
yield {'loc': loc}
@http.route([
'/shop',
'/shop/page/<int:page>',
'/shop/category/<model("product.public.category"):category>',
'/shop/category/<model("product.public.category"):category>/page/<int:page>',
], type='http', auth="public", website=True, sitemap=sitemap_shop)
def shop(self, page=0, brand=None, category=None, search='', min_price=0.0,
max_price=0.0, ppg=False, **post):
if not request.website.has_ecommerce_access():
return request.redirect('/web/login')
try:
min_price = float(min_price)
except ValueError:
min_price = 0
try:
max_price = float(max_price)
except ValueError:
max_price = 0
Category = request.env['product.public.category']
if category:
category = Category.search([('id', '=', int(category))], limit=1)
if not category or not category.can_access_from_current_website():
raise NotFound()
else:
category = Category
website = request.env['website'].get_current_website()
website_domain = website.website_domain()
if ppg:
try:
ppg = int(ppg)
post['ppg'] = ppg
except ValueError:
ppg = False
if not ppg:
ppg = website.shop_ppg or 20
ppr = website.shop_ppr or 4
gap = website.shop_gap or "16px"
request_args = request.httprequest.args
attrib_list = request_args.getlist('attribute_value')
attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if
v]
attributes_ids = {v[0] for v in attrib_values}
attrib_set = {v[1] for v in attrib_values}
brand_list = request_args.getlist('brand')
brand_ids = [int(brand) for brand in brand_list]
filter_by_tags_enabled = website.is_view_active(
'website_sale.filter_products_tags')
if filter_by_tags_enabled:
tags = request_args.getlist('tags')
# Allow only numeric tag values to avoid internal error.
if tags and all(tag.isnumeric() for tag in tags):
post['tags'] = tags
tags = {int(tag) for tag in tags}
else:
post['tags'] = None
tags = {}
keep = QueryURL('/shop', **self._shop_get_query_url_kwargs(
category and int(category), search, min_price, max_price, **post))
now = datetime.timestamp(datetime.now())
pricelist = website.pricelist_id
if 'website_sale_pricelist_time' in request.session:
# Check if we need to refresh the cached pricelist
pricelist_save_time = request.session['website_sale_pricelist_time']
if pricelist_save_time < now - 60 * 60:
request.session.pop('website_sale_current_pl', None)
website.invalidate_recordset(['pricelist_id'])
pricelist = website.pricelist_id
request.session['website_sale_pricelist_time'] = now
request.session['website_sale_current_pl'] = pricelist.id
else:
request.session['website_sale_pricelist_time'] = now
request.session['website_sale_current_pl'] = pricelist.id
filter_by_price_enabled = website.is_view_active(
'website_sale.filter_products_price')
if filter_by_price_enabled:
company_currency = website.company_id.sudo().currency_id
conversion_rate = request.env['res.currency']._get_conversion_rate(
company_currency, website.currency_id,
request.website.company_id, fields.Date.today())
else:
conversion_rate = 1
url = '/shop'
if search:
post['search'] = search
if brand_ids:
post['brand_ids'] = brand_ids
options = self._get_search_options(
category=category,
attrib_values=attrib_values,
min_price=min_price,
max_price=max_price,
conversion_rate=conversion_rate,
display_currency=website.currency_id,
**post
)
fuzzy_search_term, product_count, search_product = self._shop_lookup_products(
attrib_set, options, post, search, website)
filter_by_price_enabled = website.is_view_active(
'website_sale.filter_products_price')
if filter_by_price_enabled:
# TODO Find an alternative way to obtain the domain through the search metadata.
Product = request.env['product.template'].with_context(
bin_size=True)
domain = self._get_shop_domain(search, category, attrib_values)
# This is ~4 times more efficient than a search for the cheapest and most expensive products
query = Product._where_calc(domain)
Product._apply_ir_rules(query, 'read')
sql = query.select(
SQL(
"COALESCE(MIN(list_price), 0) * %(conversion_rate)s, COALESCE(MAX(list_price), 0) * %(conversion_rate)s",
conversion_rate=conversion_rate,
)
)
available_min_price, available_max_price = \
request.env.execute_query(sql)[0]
if min_price or max_price:
if min_price:
min_price = min_price if min_price <= available_max_price else available_min_price
post['min_price'] = min_price
if max_price:
max_price = max_price if max_price >= available_min_price else available_max_price
post['max_price'] = max_price
ProductTag = request.env['product.tag']
if filter_by_tags_enabled and search_product:
all_tags = ProductTag.search(
expression.AND([
[('product_ids.is_published', '=', True),
('visible_on_ecommerce', '=', True)],
website_domain
])
)
else:
all_tags = ProductTag
categs_domain = [('parent_id', '=', False)] + website_domain
if search:
search_categories = Category.search(
[(
'product_tmpl_ids', 'in', search_product.ids)] + website_domain
).parents_and_self
categs_domain.append(('id', 'in', search_categories.ids))
else:
search_categories = Category
categs = lazy(lambda: Category.search(categs_domain))
if category:
url = "/shop/category/%s" % request.env['ir.http']._slug(category)
pager = website.pager(url=url, total=product_count, page=page, step=ppg,
scope=5, url_args=post)
offset = pager['offset']
products = search_product[offset:offset + ppg]
ProductAttribute = request.env['product.attribute']
if products:
# get all products without limit
attributes = lazy(lambda: ProductAttribute.search([
('product_tmpl_ids', 'in', search_product.ids),
('visibility', '=', 'visible'),
]))
else:
attributes = lazy(lambda: ProductAttribute.browse(attributes_ids))
layout_mode = request.session.get('website_sale_shop_layout_mode')
if not layout_mode:
if website.viewref('website_sale.products_list_view').active:
layout_mode = 'list'
else:
layout_mode = 'grid'
request.session['website_sale_shop_layout_mode'] = layout_mode
products_prices = lazy(lambda: products._get_sales_prices(website))
attributes_values = request.env['product.attribute.value'].browse(
attrib_set)
sorted_attributes_values = attributes_values.sorted('sequence')
multi_attributes_values = sorted_attributes_values.filtered(
lambda av: av.display_type == 'multi')
single_attributes_values = sorted_attributes_values - multi_attributes_values
grouped_attributes_values = list(
groupby(single_attributes_values, lambda av: av.attribute_id.id))
grouped_attributes_values.extend(
[(av.attribute_id.id, [av]) for av in multi_attributes_values])
selected_attributes_hash = grouped_attributes_values and "#attribute_values=%s" % (
','.join(str(v[0].id) for k, v in grouped_attributes_values)
) or ''
values = {
'search': fuzzy_search_term or search,
'original_search': fuzzy_search_term and search,
'order': post.get('order', ''),
'category': category,
'attrib_values': attrib_values,
'attrib_set': attrib_set,
'pager': pager,
'products': products,
'search_product': search_product,
'search_count': product_count, # common for all searchbox
'bins': lazy(lambda: TableCompute().process(products, ppg, ppr)),
'ppg': ppg,
'ppr': ppr,
'gap': gap,
'categories': categs,
'attributes': attributes,
'keep': keep,
'selected_attributes_hash': selected_attributes_hash,
'search_categories_ids': search_categories.ids,
'layout_mode': layout_mode,
'products_prices': products_prices,
'get_product_prices': lambda product: lazy(
lambda: products_prices[product.id]),
'float_round': float_round,
'brand_ids': brand_ids,
}
if filter_by_price_enabled:
values['min_price'] = min_price or available_min_price
values['max_price'] = max_price or available_max_price
values['available_min_price'] = float_round(available_min_price, 2)
values['available_max_price'] = float_round(available_max_price, 2)
if filter_by_tags_enabled:
values.update({'all_tags': all_tags, 'tags': tags})
if category:
values['main_object'] = category
values.update(self._get_additional_extra_shop_values(values, **post))
return request.render("website_sale.products", values)
def _get_search_options(
self, category=None, attrib_values=None, tags=None, min_price=0.0,
max_price=0.0,
conversion_rate=1, **post
):
res = super()._get_search_options(category=category,
attrib_values=attrib_values,
tags=tags, min_price=min_price,
max_price=max_price,
conversion_rate=conversion_rate,
**post)
res['brand_ids'] = post.get('brand_ids', None)
return res

60
theme_boec/controllers/product_snippets.py

@ -0,0 +1,60 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import http
from odoo.http import request
class WebsiteProduct(http.Controller):
@http.route('/get_product_tab', auth="public", type='json', website=True)
def get_product_tab(self):
print('REACHED')
"""Get the website published products for snippet"""
new_arrivals = request.env['product.template'].sudo().search_read(
[('website_published', '=', True)],
order='create_date desc', limit=12)
hot_deals = request.env['product.template'].sudo().search_read(
[('website_published', '=', True),
('hot_deals', '=', True)], limit=12)
return {
'new_arrivals': new_arrivals,
'hot_deals': hot_deals,
'symbol': request.env.user.company_id.currency_id.symbol
}
@http.route('/get_products', auth='public', type='json', website=True)
def get_products(self, **kwargs):
"""Allows to get deal of the week product."""
boec_configuration = request.env.ref('theme_boec.boec_config_data')
product = boec_configuration.deal_week_product_id
return {
'id': product.id,
'name': product.name,
'lst_price': product.lst_price,
'product_tmpl_id': product.product_tmpl_id.id,
'symbol': request.env.user.company_id.currency_id.symbol
}
@http.route('/get_countdown', auth='public', type='json', website=True)
def get_countdown(self, **kwargs):
"""End date for the deal"""
return request.env.ref('theme_boec.boec_config_data').date_end

9
theme_boec/data/boec_config_data.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<!--created a record in model boec.config-->
<record id="boec_config_data" model="boec.config">
<field name="name">Boec Config</field>
</record>
</data>
</odoo>

6
theme_boec/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <theme_boec>
#### 29.10.2024
#### Version 18.0.1.0.0
#### ADD
- Initial commit for Theme Boec

26
theme_boec/models/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import boec_config
from . import product_brand
from . import product_template
from . import theme_utils
from . import website

37
theme_boec/models/boec_config.py

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class BoecConfig(models.Model):
"""Allows to set a product that will deal of the week. It is a snippet"""
_name = 'boec.config'
_description = 'Boec Config'
name = fields.Char(string='Name', help='Name of the Deal')
deal_week_product_id = fields.Many2one('product.product',
domain=[('is_published', '=', True)],
string='Deal of the Week Product',
help='This product will be the deal'
'of the week')
date_end = fields.Datetime(string='Counter End Date', help='End date of'
'this offer')

37
theme_boec/models/product_brand.py

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ProductBrand(models.Model):
"""Model for creating Brands for products."""
_name = 'product.brand'
_description = "Product Brand"
_rec_name = 'brand_name'
brand_name = fields.Char(required=True, string='Name', help='Name of the'
'brand.')
sequence_no = fields.Integer(string="Sequence no", help='Sequence number of'
'brand.')
parent_id = fields.Many2one('product.brand', string='Parent Brand',
index=True, help='Select the parent brand of'
'the brand.')

44
theme_boec/models/product_template.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ProductTemplate(models.Model):
"""Inherited product template for adding the field Hot Sale and Product
Brand. While using the snippet 'Product Tab', the product with enabled
Hot Sale will be display."""
_inherit = "product.template"
hot_deals = fields.Boolean(string="Hot Sale", help='The product or services'
'which are high in'
'demand at a particular'
'time or period')
brand_id = fields.Many2one('product.brand', string="Product Brand",
help='Enabled product can filter from website'
'by brand.')
def _search_get_detail(self, website, order, options):
res = super()._search_get_detail(website, order, options)
if options.get('brand_ids', None):
res['base_domain'].append(
[('brand_id.id', 'in', options['brand_ids'])])
return res

54
theme_boec/models/theme_utils.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import models
class ThemeUtils(models.AbstractModel):
_inherit = 'theme.utils'
def _theme_boec_post_copy(self, mod):
self.enable_view('theme_boec.boec_header')
self.disable_view('website_sale.products_add_to_cart')
self.disable_view('website_sale_comparison.add_to_compare')
self.disable_view('website_sale.product_buy_now')
self.disable_view('website_sale_wishlist.add_to_wishlist')
self.disable_view('website_sale.add_grid_or_list_option')
self.disable_view('website_sale.products_list_view')
self.disable_view('website_sale.alternative_products')
self.disable_view('website_sale.product_buy_now')
self.disable_view('website_sale.product_comment')
self.disable_view('website_sale.product_picture_magnify_both')
self.disable_view('website_sale.product_variants')
self.disable_view('website_sale_comparison.product_attributes_body')
self.disable_view('website_sale.ecom_show_extra_fields')
self.disable_view('website_sale.product_custom_text')
self.disable_view('website_sale.products_add_to_cart')
self.disable_view('website_sale_wishlist.product_add_to_wishlist')
self.disable_view('website_blog.opt_posts_loop_show_author')
self.disable_view('website_blog.opt_posts_loop_show_stats')
self.disable_view('website_blog.opt_posts_loop_show_stats')
self.disable_view('website_blog.opt_blog_list_view')
self.disable_view('website_blog.opt_blog_cards_design')
self.disable_view('website_blog.opt_blog_cover_post')
self.disable_view('website_blog.opt_blog_cover_post_fullwidth_design')
self.disable_view('website_blog.opt_blog_post_breadcrumb')
self.disable_view('website_blog.opt_blog_post_sidebar')

31
theme_boec/models/website.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import models
class Website(models.Model):
"""Inherited website fo apply brand feature."""
_inherit = "website"
def get_brands(self):
"""Returning all brands"""
return self.env['product.brand'].search([])

3
theme_boec/security/ir.model.access.csv

@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_product_brand_user,access.product.brand.user,model_product_brand,,1,1,1,1
access_boec_config_user,access.boec.config.user,model_boec_config,base.group_user,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_product_brand_user access.product.brand.user model_product_brand 1 1 1 1
3 access_boec_config_user access.boec.config.user model_boec_config base.group_user 1 1 1 1

BIN
theme_boec/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
theme_boec/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
theme_boec/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
theme_boec/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
theme_boec/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
theme_boec/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
theme_boec/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
theme_boec/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
theme_boec/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
theme_boec/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
theme_boec/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
theme_boec/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
theme_boec/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
theme_boec/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
theme_boec/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
theme_boec/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
theme_boec/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
theme_boec/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
theme_boec/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
theme_boec/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
theme_boec/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
theme_boec/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
theme_boec/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
theme_boec/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
theme_boec/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
theme_boec/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
theme_boec/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
theme_boec/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
theme_boec/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
theme_boec/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
theme_boec/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
theme_boec/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
theme_boec/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
theme_boec/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
theme_boec/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
theme_boec/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
theme_boec/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
theme_boec/static/description/assets/modules/5.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
theme_boec/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
theme_boec/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

BIN
theme_boec/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
theme_boec/static/description/images/1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

BIN
theme_boec/static/description/images/2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

BIN
theme_boec/static/description/images/3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
theme_boec/static/description/images/4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
theme_boec/static/description/images/5.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

BIN
theme_boec/static/description/images/6.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
theme_boec/static/description/images/Cybrosys R.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
theme_boec/static/description/images/Cybrosys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
theme_boec/static/description/images/Poster-modal.psd

Binary file not shown.

BIN
theme_boec/static/description/images/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

BIN
theme_boec/static/description/images/boec_deal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

BIN
theme_boec/static/description/images/boec_hot_sales.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 KiB

BIN
theme_boec/static/description/images/capture (1).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
theme_boec/static/description/images/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
theme_boec/static/description/images/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
theme_boec/static/description/images/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
theme_boec/static/description/images/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
theme_boec/static/description/images/cybro-logo-oca-no-text.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
theme_boec/static/description/images/cybro-logo-oca.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
theme_boec/static/description/images/demo-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
theme_boec/static/description/images/demo-2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

BIN
theme_boec/static/description/images/demo-3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

BIN
theme_boec/static/description/images/demo-4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

BIN
theme_boec/static/description/images/demo-5.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

BIN
theme_boec/static/description/images/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
theme_boec/static/description/images/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

33
theme_boec/static/description/images/email.svg

@ -0,0 +1,33 @@
<svg width="80" height="81" viewBox="0 0 80 81" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="3116889_design_email_material_communication_mail_icon 1" clip-path="url(#clip0_81_366)">
<g id="layer1">
<path id="rect3851" d="M74.6067 0.730957H5.5424C2.75742 0.730957 0.499756 3.01685 0.499756 5.83664V75.7642C0.499756 78.584 2.75742 80.8699 5.5424 80.8699H74.6067C77.3916 80.8699 79.6493 78.584 79.6493 75.7642V5.83664C79.6493 3.01685 77.3916 0.730957 74.6067 0.730957Z" fill="#DB534B"/>
<g id="Clip path group">
<mask id="mask0_81_366" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="1" y="5" width="78" height="76">
<g id="clipPath4206">
<path id="rect4208" d="M73.6244 5.2915H6.62595C3.92428 5.2915 1.73413 7.4473 1.73413 10.1066V76.0546C1.73413 78.7139 3.92428 80.8697 6.62595 80.8697H73.6244C76.3261 80.8697 78.5162 78.7139 78.5162 76.0546V10.1066C78.5162 7.4473 76.3261 5.2915 73.6244 5.2915Z" fill="white"/>
</g>
</mask>
<g mask="url(#mask0_81_366)">
<g id="g4145" opacity="0.489612">
<g id="g4147">
<path id="path4149" d="M65.8115 41.5171C65.8115 54.9863 54.4292 65.9053 40.3884 65.9053L198.828 221.861C212.869 221.861 224.251 210.942 224.251 197.472L65.8115 41.5171Z" fill="black" fill-opacity="0.0588235"/>
<path id="path4151" d="M40.3884 65.9051C33.2495 65.9051 26.7979 63.0825 22.1802 58.5371L180.62 214.492C185.237 219.038 191.689 221.86 198.828 221.86L40.3884 65.9051Z" fill="black" fill-opacity="0.0588235"/>
<path id="path4153" d="M22.1802 58.5373C17.7157 54.1428 14.9653 48.1381 14.9653 41.5171L173.405 197.472C173.405 204.093 176.155 210.098 180.62 214.493L22.1802 58.5373Z" fill="black" fill-opacity="0.0588235"/>
<path id="path4155" d="M14.9653 41.5171C14.9653 28.0479 26.3476 17.1289 40.3884 17.1289L198.828 173.084C184.787 173.084 173.405 184.003 173.405 197.472L14.9653 41.5171Z" fill="black" fill-opacity="0.0588235"/>
<path id="path4157" d="M40.3884 17.1289C47.5273 17.1289 53.9789 19.9516 58.5966 24.4969L217.036 180.452C212.418 175.907 205.967 173.084 198.828 173.084L40.3884 17.1289Z" fill="black" fill-opacity="0.0588235"/>
<path id="path4159" d="M58.5964 24.4971C63.0609 28.8916 65.8113 34.8963 65.8113 41.5173L224.251 197.473C224.251 190.852 221.5 184.847 217.036 180.452L58.5964 24.4971Z" fill="black" fill-opacity="0.0588235"/>
</g>
<path id="path4111" d="M65.8114 41.5171C65.8114 54.9863 54.4291 65.9053 40.3884 65.9053C26.3476 65.9053 14.9653 54.9863 14.9653 41.5171C14.9653 28.0479 26.3476 17.1289 40.3884 17.1289C54.4291 17.1289 65.8114 28.0479 65.8114 41.5171Z" fill="black" fill-opacity="0.0588235"/>
</g>
</g>
</g>
<path id="path3864" d="M17.506 17.5386H62.9018C64.4068 17.5386 65.8501 18.1439 66.9143 19.2214C67.9784 20.2988 68.5763 21.7602 68.5763 23.284V57.7564C68.5763 58.5109 68.4295 59.258 68.1443 59.9551C67.8592 60.6521 67.4412 61.2855 66.9143 61.819C66.3873 62.3525 65.7618 62.7757 65.0733 63.0645C64.3849 63.3532 63.647 63.5018 62.9018 63.5018H17.506C14.3567 63.5018 11.8315 60.9164 11.8315 57.7564V23.284C11.8315 20.0953 14.3567 17.5386 17.506 17.5386ZM40.2039 37.6475L62.9018 23.284H17.506L40.2039 37.6475ZM17.506 57.7564H62.9018V30.0923L40.2039 44.4271L17.506 30.0923V57.7564Z" fill="white"/>
</g>
</g>
<defs>
<clipPath id="clip0_81_366">
<rect width="80" height="81" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
theme_boec/static/description/images/hero.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

BIN
theme_boec/static/description/images/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
theme_boec/static/description/images/laptop-screenshots.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

BIN
theme_boec/static/description/images/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
theme_boec/static/description/images/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
theme_boec/static/description/images/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
theme_boec/static/description/images/new_arrivals.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

BIN
theme_boec/static/description/images/phone-screenshots.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

3
theme_boec/static/description/images/phone.svg

@ -0,0 +1,3 @@
<svg width="36" height="44" viewBox="0 0 36 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path id="Vector" d="M7.25 19.3903C10.13 26.0689 14.76 31.5322 20.43 34.9305L24.83 29.7268C25.38 29.0778 26.17 28.889 26.86 29.1486C29.1 30.0218 31.51 30.4938 34 30.4938C35.11 30.4938 36 31.544 36 32.8537V41.1135C36 42.4233 35.11 43.4734 34 43.4734C15.22 43.4734 0 25.5143 0 3.35456C0 2.0448 0.9 0.994629 2 0.994629H9C10.11 0.994629 11 2.0448 11 3.35456C11 6.29268 11.4 9.1364 12.14 11.7795C12.36 12.5937 12.2 13.5259 11.65 14.1749L7.25 19.3903Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 565 B

BIN
theme_boec/static/description/images/photo-capture.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
theme_boec/static/description/images/pngwing.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
theme_boec/static/description/images/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
theme_boec/static/description/images/poster.psd

Binary file not shown.

BIN
theme_boec/static/description/images/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
theme_boec/static/description/images/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
theme_boec/static/description/images/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

9
theme_boec/static/description/images/star (1) 2.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save