diff --git a/account.py b/account.py index a2af8a6b51..26289333e6 100644 --- a/account.py +++ b/account.py @@ -11,7 +11,8 @@ from sql.aggregate import Sum, Max from sql.conditionals import Coalesce, Case from trytond.model import ( - ModelView, ModelSQL, DeactivableMixin, fields, Unique, sequence_ordered) + ModelView, ModelSQL, DeactivableMixin, fields, Unique, sequence_ordered, + tree) from trytond.wizard import Wizard, StateView, StateAction, StateTransition, \ Button from trytond.report import Report @@ -43,7 +44,8 @@ def inactive_records(func): return wrapper -class TypeTemplate(sequence_ordered(), ModelSQL, ModelView): +class TypeTemplate( + sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView): 'Account Type Template' __name__ = 'account.account.type.template' name = fields.Char('Name', required=True) @@ -68,11 +70,6 @@ class TypeTemplate(sequence_ordered(), ModelSQL, ModelView): # Migration from 2.4: drop required on sequence table.not_null_action('sequence', action='remove') - @classmethod - def validate(cls, records): - super(TypeTemplate, cls).validate(records) - cls.check_recursion(records, rec_name='name') - @staticmethod def default_balance_sheet(): return False @@ -85,12 +82,6 @@ class TypeTemplate(sequence_ordered(), ModelSQL, ModelView): def default_display_balance(): return 'debit-credit' - def get_rec_name(self, name): - if self.parent: - return self.parent.get_rec_name(name) + '\\' + self.name - else: - return self.name - def _get_type_value(self, type=None): ''' Set the values for account creation. @@ -148,7 +139,7 @@ class TypeTemplate(sequence_ordered(), ModelSQL, ModelView): childs = sum((c.childs for c in childs), ()) -class Type(sequence_ordered(), ModelSQL, ModelView): +class Type(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView): 'Account Type' __name__ = 'account.account.type' @@ -203,11 +194,6 @@ class Type(sequence_ordered(), ModelSQL, ModelView): # Migration from 2.4: drop required on sequence table.not_null_action('sequence', action='remove') - @classmethod - def validate(cls, types): - super(Type, cls).validate(types) - cls.check_recursion(types, rec_name='name') - @staticmethod def default_balance_sheet(): return False @@ -289,12 +275,6 @@ class Type(sequence_ordered(), ModelSQL, ModelView): ~Eval('comparison', False)), ] - def get_rec_name(self, name): - if self.parent: - return self.parent.get_rec_name(name) + '\\' + self.name - else: - return self.name - @classmethod def delete(cls, types): types = cls.search([ @@ -367,7 +347,7 @@ class OpenType(Wizard): do_ledger_account = open_action -class AccountTemplate(ModelSQL, ModelView): +class AccountTemplate(tree(), ModelSQL, ModelView): 'Account Template' __name__ = 'account.account.template' name = fields.Char('Name', size=None, required=True, select=True) @@ -424,11 +404,6 @@ class AccountTemplate(ModelSQL, ModelView): cls._order.insert(0, ('code', 'ASC')) cls._order.insert(1, ('name', 'ASC')) - @classmethod - def validate(cls, templates): - super(AccountTemplate, cls).validate(templates) - cls.check_recursion(templates) - @staticmethod def default_kind(): return 'view' @@ -590,7 +565,7 @@ class AccountTemplateTaxTemplate(ModelSQL): ondelete='RESTRICT', select=True, required=True) -class Account(DeactivableMixin, ModelSQL, ModelView): +class Account(DeactivableMixin, tree(), ModelSQL, ModelView): 'Account' __name__ = 'account.account' _states = { @@ -744,7 +719,6 @@ class Account(DeactivableMixin, ModelSQL, ModelView): @classmethod def validate(cls, accounts): super(Account, cls).validate(accounts) - cls.check_recursion(accounts) cls.check_second_currency(accounts) @staticmethod diff --git a/tax.py b/tax.py index 2d8dc63647..9f20ad625b 100644 --- a/tax.py +++ b/tax.py @@ -11,7 +11,7 @@ from sql.conditionals import Case from trytond.model import ( ModelView, ModelSQL, MatchMixin, DeactivableMixin, fields, - sequence_ordered) + sequence_ordered, tree) from trytond.wizard import Wizard, StateView, StateAction, Button from trytond import backend from trytond.pyson import Eval, If, Bool, PYSONEncoder @@ -55,7 +55,7 @@ class TaxGroup(ModelSQL, ModelView): return 'both' -class TaxCodeTemplate(ModelSQL, ModelView): +class TaxCodeTemplate(tree(), ModelSQL, ModelView): 'Tax Code Template' __name__ = 'account.tax.code.template' name = fields.Char('Name', required=True) @@ -73,11 +73,6 @@ class TaxCodeTemplate(ModelSQL, ModelView): cls._order.insert(0, ('code', 'ASC')) cls._order.insert(0, ('account', 'ASC')) - @classmethod - def validate(cls, templates): - super(TaxCodeTemplate, cls).validate(templates) - cls.check_recursion(templates) - def _get_tax_code_value(self, code=None): ''' Set values for tax code creation. @@ -134,7 +129,7 @@ class TaxCodeTemplate(ModelSQL, ModelView): childs = sum((c.childs for c in childs), ()) -class TaxCode(DeactivableMixin, ModelSQL, ModelView): +class TaxCode(DeactivableMixin, tree(), ModelSQL, ModelView): 'Tax Code' __name__ = 'account.tax.code' _states = { @@ -173,11 +168,6 @@ class TaxCode(DeactivableMixin, ModelSQL, ModelView): super(TaxCode, cls).__setup__() cls._order.insert(0, ('code', 'ASC')) - @classmethod - def validate(cls, codes): - super(TaxCode, cls).validate(codes) - cls.check_recursion(codes) - @staticmethod def default_company(): return Transaction().context.get('company')