Use tree mixin
issue7383 review45421002
This commit is contained in:
+2
-28
@@ -1,11 +1,11 @@
|
||||
# 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
|
||||
from trytond.model import ModelView, ModelSQL, fields, tree
|
||||
|
||||
__all__ = ['Category']
|
||||
|
||||
|
||||
class Category(ModelSQL, ModelView):
|
||||
class Category(tree(separator=' / '), ModelSQL, ModelView):
|
||||
"Product Category"
|
||||
__name__ = "product.category"
|
||||
name = fields.Char('Name', required=True, translate=True)
|
||||
@@ -17,29 +17,3 @@ class Category(ModelSQL, ModelView):
|
||||
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)]
|
||||
|
||||
Reference in New Issue
Block a user