From a2b98e94beb2b64623bfca006e96d34cb6651ae8 Mon Sep 17 00:00:00 2001 From: Patrick Tombez Date: Fri, 9 Aug 2019 13:51:03 +0000 Subject: [PATCH] [FIX] website_sale_comparison: Fix category order MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use category sequence to order them instead of their order of appearance in the list of sequence ordered attributes closes odoo/odoo#35610 Signed-off-by: Jérémy Kersten (jke) --- addons/website_sale_comparison/controllers/main.py | 11 ++++++----- .../models/website_sale_comparison.py | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/website_sale_comparison/controllers/main.py b/addons/website_sale_comparison/controllers/main.py index 29b605a9837..a54d9763e51 100644 --- a/addons/website_sale_comparison/controllers/main.py +++ b/addons/website_sale_comparison/controllers/main.py @@ -18,14 +18,15 @@ class WebsiteSaleProductComparison(WebsiteSale): products = request.env['product.product'].search([('id', 'in', product_ids)]) values['products'] = products.with_context(display_default_code=False) - res = {} + res = OrderedDict() + attrs = products.mapped('attribute_line_ids.attribute_id').filtered(lambda x: x.create_variant) + for attr in attrs.sorted(lambda att: (att.category_id.sequence, att.sequence)): + cat_name = attr.category_id.name or _('Uncategorized') + res.setdefault(cat_name, OrderedDict()).setdefault(attr.name, [' - '] * len(products)) for num, product in enumerate(products): - for var in product.attribute_line_ids.sorted(lambda x: x.attribute_id.sequence): + for var in product.attribute_line_ids.filtered(lambda x: x.attribute_id.create_variant): cat_name = var.attribute_id.category_id.name or _('Uncategorized') att_name = var.attribute_id.name - if not var.attribute_id.create_variant: - continue - res.setdefault(cat_name, OrderedDict()).setdefault(att_name, [' - '] * len(products)) val = product.attribute_value_ids.filtered(lambda x: x.attribute_id == var.attribute_id) res[cat_name][att_name][num] = val[0].name values['specs'] = res diff --git a/addons/website_sale_comparison/models/website_sale_comparison.py b/addons/website_sale_comparison/models/website_sale_comparison.py index f19692efe81..88be2499c0a 100644 --- a/addons/website_sale_comparison/models/website_sale_comparison.py +++ b/addons/website_sale_comparison/models/website_sale_comparison.py @@ -26,6 +26,6 @@ class ProductTemplate(models.Model): def get_variant_groups(self): res = OrderedDict() - for var in self.attribute_line_ids.sorted(lambda x: x.attribute_id.sequence): + for var in self.attribute_line_ids.sorted(lambda x: (x.attribute_id.category_id.sequence, x.attribute_id.sequence)): res.setdefault(var.attribute_id.category_id.name or _('Uncategorized'), []).append(var) return res