Files
tryton/category.py
T
2013-04-06 12:28:50 +02:00

46 lines
1.5 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 ModelView, ModelSQL, fields
__all__ = ['Category']
class Category(ModelSQL, ModelView):
"Product Category"
__name__ = "product.category"
name = fields.Char('Name', required=True, translate=True)
parent = fields.Many2One('product.category', 'Parent', select=True)
childs = fields.One2Many('product.category', 'parent',
string='Children')
@classmethod
def __setup__(cls):
super(Category, cls).__setup__()
cls._order.insert(0, ('name', 'ASC'))
@classmethod
def validate(cls, categories):
super(Category, cls).validate(categories)
cls.check_recursion(categories, rec_name='name')
def get_rec_name(self, name):
if self.parent:
return self.parent.get_rec_name(name) + ' / ' + self.name
else:
return self.name
@classmethod
def search_rec_name(cls, name, clause):
if isinstance(clause[2], basestring):
values = clause[2].split('/')
values.reverse()
domain = []
field = 'name'
for name in values:
domain.append((field, clause[1], name.strip()))
field = 'parent.' + field
else:
domain = [('name',) + tuple(clause[1:])]
ids = [w.id for w in cls.search(domain, order=[])]
return [('parent', 'child_of', ids)]