from odoo import fields, http from odoo.http import request from odoo.addons.website_sale.controllers.main import WebsiteSale class WebsiteSaleMinMax(WebsiteSale): @http.route() def cart_update(self, *args, ordered_qty=None, max_qty=None, **kw): """Override to get ordered_qty and max_qty from the product.""" product_uom_ordered_qty = fields.Float(ordered_qty) product_uom_max_qty = fields.Float(max_qty) return super().cart_update(*args, ordered_qty=product_uom_ordered_qty, max_qty=product_uom_max_qty, **kw) class WebsiteSale(WebsiteSale): def _get_search_options( self, category=None, attrib_values=None, pricelist=None, min_price=0.0, max_price=0.0, conversion_rate=1, **post ): res = super()._get_search_options( category=category, attrib_values=attrib_values, pricelist=pricelist, min_price=min_price, max_price=max_price, conversion_rate=conversion_rate, **post ) res["open_product_ids"] = post.get("open_product_ids") return res @http.route( [ "/shop", "/shop/page/", '/shop/category/', '/shop/category//page/', ], type="http", auth="public", website=True, ) def shop(self, page=0, category=None, search="", min_price=0.0, max_price=0.0, ppg=False, **post): if post.get("open_packagings"): batch = request.website.sale_get_order(force_create=True).batch_id open_product_ids = ( batch.product_ids.filtered(lambda p: p.open_packaging_qty > 0).mapped("product_template_id").ids ) post["open_product_ids"] = open_product_ids else: post["open_product_ids"] = [] res = super().shop(page=0, category=None, search="", min_price=0.0, max_price=0.0, ppg=False, **post) return res