From 9c8b99acf748e810bf9d145cd4c2f439acdf7329 Mon Sep 17 00:00:00 2001 From: Nicolas Seinlet Date: Fri, 4 Sep 2015 14:10:32 +0200 Subject: [PATCH] [IMP] website_sale: extract search domain in overwritable method --- addons/website_sale/controllers/main.py | 34 ++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index e45f4031db6..7a067151a18 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -137,24 +137,17 @@ class website_sale(http.Controller): return attribute_value_ids - @http.route(['/shop', - '/shop/page/', - '/shop/category/', - '/shop/category//page/' - ], type='http', auth="public", website=True) - def shop(self, page=0, category=None, search='', **post): - cr, uid, context, pool = request.cr, request.uid, request.context, request.registry - + def _get_search_domain(self, search, category, attrib_values): domain = request.website.sale_product_domain() + if search: for srch in search.split(" "): - domain += ['|', '|', '|', ('name', 'ilike', srch), ('description', 'ilike', srch), + domain += [ + '|', '|', '|', ('name', 'ilike', srch), ('description', 'ilike', srch), ('description_sale', 'ilike', srch), ('product_variant_ids.default_code', 'ilike', srch)] + if category: domain += [('public_categ_ids', 'child_of', int(category))] - attrib_list = request.httprequest.args.getlist('attrib') - attrib_values = [map(int,v.split("-")) for v in attrib_list if v] - attrib_set = set([v[1] for v in attrib_values]) if attrib_values: attrib = None @@ -172,6 +165,23 @@ class website_sale(http.Controller): if attrib: domain += [('attribute_line_ids.value_ids', 'in', ids)] + return domain + + @http.route([ + '/shop', + '/shop/page/', + '/shop/category/', + '/shop/category//page/' + ], type='http', auth="public", website=True) + def shop(self, page=0, category=None, search='', **post): + cr, uid, context, pool = request.cr, request.uid, request.context, request.registry + + attrib_list = request.httprequest.args.getlist('attrib') + attrib_values = [map(int, v.split("-")) for v in attrib_list if v] + attrib_set = set([v[1] for v in attrib_values]) + + domain = self._get_search_domain(search, category, attrib_values) + keep = QueryURL('/shop', category=category and int(category), search=search, attrib=attrib_list) if not context.get('pricelist'):