33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
|
# -*- 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
|