# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from collections import OrderedDict from odoo import models, fields class ProductAttribute(models.Model): _inherit = 'product.attribute' visibility = fields.Selection([('visible', 'Visible'), ('hidden', 'Hidden')], default='visible') class ProductTemplateAttributeLine(models.Model): _inherit = 'product.template.attribute.line' def _prepare_single_value_for_display(self): """On the product page group together the attribute lines that concern the same attribute and that have only one value each. Indeed those are considered informative values, they do not generate choice for the user, so they are displayed below the configurator. The returned attributes are ordered as they appear in `self`, so based on the order of the attribute lines. """ single_value_lines = self.filtered(lambda ptal: len(ptal.value_ids) == 1) single_value_attributes = OrderedDict([(pa, self.env['product.template.attribute.line']) for pa in single_value_lines.attribute_id]) for ptal in single_value_lines: single_value_attributes[ptal.attribute_id] |= ptal return single_value_attributes