Files
tryton/modules/product/category.py
T

45 lines
1.6 KiB
Python
Raw Normal View History

2014-12-02 12:55:30 +01:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
2021-12-11 17:58:42 +01:00
from trytond.model import ModelSQL, ModelView, fields, tree
from trytond.pyson import PYSONEncoder
2008-03-03 18:36:08 +01:00
2008-03-04 11:56:55 +01:00
2018-05-12 00:49:18 +02:00
class Category(tree(separator=' / '), ModelSQL, ModelView):
2008-03-03 18:36:08 +01:00
"Product Category"
2012-09-24 22:18:00 +02:00
__name__ = "product.category"
name = fields.Char('Name', required=True, translate=True)
2020-04-13 17:50:45 +02:00
parent = fields.Many2One(
'product.category', "Parent",
2020-04-13 17:50:45 +02:00
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")
2008-03-03 18:36:08 +01:00
2012-09-24 22:18:00 +02:00
@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)