From b245af63b5e62198af3ce1f67b908bb8cc169dd3 Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Wed, 19 Mar 2014 15:11:30 +0100 Subject: [PATCH] [FIX] website_sale: do not display product categories with no products bzr revid: dle@openerp.com-20140319141130-dease119j9b2l2fh --- addons/website_sale/controllers/main.py | 16 ++++++++++++---- addons/website_sale/views/website_sale.xml | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 3aaabb596f1..b345b810e32 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -226,7 +226,8 @@ class Ecommerce(http.Controller): def shop(self, category=None, page=0, filters='', search='', **post): cr, uid, context = request.cr, request.uid, request.context product_obj = request.registry.get('product.template') - domain = request.registry.get('website').ecommerce_get_product_domain() + base_domain = request.registry.get('website').ecommerce_get_product_domain() + domain = list(base_domain) if search: domain += ['|', ('name', 'ilike', search), @@ -265,9 +266,15 @@ class Ecommerce(http.Controller): pass category_obj = request.registry.get('product.public.category') - category_ids = category_obj.search(cr, uid, [], context=context) + category_ids = [product['public_categ_id'][0] for product in product_obj.read_group(cr, uid, base_domain, ['public_categ_id'], ['public_categ_id'], context=context) if product['public_categ_id']] categories = category_obj.browse(cr, uid, category_ids, context=context) - categs = filter(lambda x: not x.parent_id, categories) + all_categories = set(categories) + for cat in categories: + parent = cat.parent_id + while parent: + all_categories.add(parent) + parent = parent.parent_id + categories = list(all_categories) values = { 'products': products, @@ -282,7 +289,8 @@ class Ecommerce(http.Controller): 'pager': pager, 'styles': styles, 'category': category, - 'categories': categs, + 'categories': filter(lambda x: not x.parent_id, categories), + 'all_categories': categories, 'Ecommerce': self, # TODO fp: Should be removed 'style_in_product': lambda style, product: style.id in [s.id for s in product.website_style_ids], } diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 247c9127222..264eab5c36b 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -33,12 +33,14 @@