45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
from trytond.model import ModelSQL, ModelView, fields, tree
|
|
from trytond.pyson import PYSONEncoder
|
|
|
|
|
|
class Category(tree(separator=' / '), ModelSQL, ModelView):
|
|
"Product Category"
|
|
__name__ = "product.category"
|
|
name = fields.Char('Name', required=True, translate=True)
|
|
parent = fields.Many2One(
|
|
'product.category', "Parent",
|
|
help="Used to add structure above the category.")
|
|
childs = fields.One2Many(
|
|
'product.category', 'parent', string="Children",
|
|
help="Used to add structure below the category.")
|
|
templates = fields.Many2Many(
|
|
'product.template-product.category', 'category', 'template',
|
|
"Products")
|
|
|
|
@classmethod
|
|
def __setup__(cls):
|
|
super(Category, cls).__setup__()
|
|
cls._order.insert(0, ('name', 'ASC'))
|
|
cls._buttons.update({
|
|
'add_products': {
|
|
'icon': 'tryton-add',
|
|
},
|
|
})
|
|
|
|
@classmethod
|
|
@ModelView.button_action('product.act_category_product')
|
|
def add_products(cls, categories):
|
|
return {
|
|
'res_id': [categories[0].id],
|
|
'pyson_domain': PYSONEncoder().encode(
|
|
[('id', '=', categories[0].id)]),
|
|
}
|
|
|
|
@classmethod
|
|
def copy(cls, categories, default=None):
|
|
default = default.copy() if default is not None else {}
|
|
default.setdefault('templates')
|
|
return super().copy(categories, default=default)
|