You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							94 lines
						
					
					
						
							3.8 KiB
						
					
					
				| # -*- coding: utf-8 -*- | |
| ################################################################################ | |
| # | |
| #    Cybrosys Technologies Pvt. Ltd. | |
| # | |
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | |
| #    Author: Ammu (odoo@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 | |
| from odoo.addons.http_routing.models.ir_http import slug | |
| from odoo.addons.website_sale.controllers.main import WebsiteSale | |
| from odoo.addons.website_sale.controllers.main import TableCompute | |
| 
 | |
| 
 | |
| class WebsiteSales(WebsiteSale): | |
|     """View of Product Brands in Website""" | |
| 
 | |
|     @http.route([ | |
|         '''/shop''', | |
|         '''/shop/page/<int:page>''', | |
|         '''/shop/category/<model("product.public.category"):category>''', | |
|         '''/shop/category/<model("product.public.category"):categorys>/page/<int:page>''', | |
|         '''/shop/brand/<model("product.brand"):brand>''', | |
|     ], type='http', auth="public", website=True) | |
|     def shop(self, page=0, category=None, search='', min_price=0.0, max_price=0.0, ppg=False, brand=None, | |
|              **post): | |
|         """ | |
|         Defined a url for product brands inside the existing function and controller of WebsiteSale | |
|         """ | |
|         res = super(WebsiteSales, self).shop(page=page, category=category, search=search, min_price=min_price, max_price=max_price, ppg=ppg, brand=brand, | |
|                     **post) | |
|         website = request.env['website'].get_current_website() | |
|         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 | |
|         Brand = request.env['product.brand'] | |
|         url = "/shop" | |
|         if not brand: | |
|             brand = Brand | |
|         if category: | |
|             url = "/shop/category/%s" % slug(category) | |
| 
 | |
|         Brand = request.env['product.brand'].search([]) | |
|         if brand: | |
|             products_brand = request.env['product.template'].search( | |
|                 ['&', ('brand_id', '=', brand.id), ('sale_ok', '=', True), ('is_published', '=', True)]) | |
|             product_brand_count = len(products_brand) | |
|             pager_brand = request.website.pager(url=url, total=product_brand_count, page=page, step=ppg, scope=7, | |
|                                                 url_args=post) | |
|             res.qcontext.update({ | |
|                 'brand': brand, | |
|                 'pager': pager_brand, | |
|                 'products': products_brand, | |
|                 'search_count': product_brand_count,  # common for all searchbox | |
|                 'bins': TableCompute().process(products_brand, ppg, ppr), | |
|                 'brands': Brand}) | |
|         else: | |
|             res.qcontext.update({ | |
|                 'brand': brand, | |
|                 'brands': Brand}) | |
|         return res | |
| 
 | |
| 
 | |
| class ProductBrandWebsite(http.Controller): | |
|     """Returns the featured brands""" | |
| 
 | |
|     @http.route(['/product_brand'], type="json", auth="public", | |
|                 methods=['POST']) | |
|     def featured_brands(self): | |
|         """Returns the brand name, image &id of the featured brands""" | |
|         brands = http.request.env['product.brand'].search_read( | |
|             [('is_featured_brand', '=', True)], ['name', 'brand_image', 'id']) | |
|         return brands
 | |
| 
 |