# 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 ( ModelSingleton, ModelSQL, UnionMixin, fields, sequence_ordered) from trytond.pool import Pool from trytond.pyson import Eval class Model(ModelSQL): 'Model' __name__ = 'test.model' name = fields.Char('Name') selection = fields.Selection([ ('foo', "Foo"), ('bar', "Bar"), (None, ""), ], "Selection") multiselection = fields.MultiSelection([ ('foo', "Foo"), ('bar', "Bar"), ], "MultiSelection") class ModelParent(Model): "Model Parent" __name__ = 'test.model_parent' name = fields.Char("Name") children = fields.One2Many('test.model_child', 'parent', "Children") class ModelChild(Model): "Model Child" __name__ = 'test.model_child' name = fields.Char("Name") parent = fields.Many2One('test.model_parent', "Parent") class ModelChildChild(Model): "Model Child Child" __name__ = 'test.model_child_child' name = fields.Char("Name") parent = fields.Many2One('test.model_child', "Parent") class ModelContext(Model): "Model with contextual field" __name__ = 'test.model_context' name = fields.Char("Name") target = fields.Many2One( 'test.model', "Target", context={ 'name': Eval('name'), }) class ModelContextParent(Model): "Model with contextual field from _parent" __name__ = 'test.model_context_parent' parent = fields.Many2One('test.model', "Parent") target = fields.Many2One( 'test.model', "Target", context={ 'name': Eval('_parent_parent', {}).get('name'), }) class ModelDefault(Model): "Model with default" __name__ = 'test.model.default' name = fields.Char("Name") description = fields.Char("Description") target = fields.Many2One('test.model', "Target") @classmethod def default_description(cls): return "Test" class Singleton(ModelSingleton, ModelSQL): 'Singleton' __name__ = 'test.singleton' name = fields.Char('Name') @staticmethod def default_name(): return 'test' class URLObject(ModelSQL): 'URLObject' __name__ = 'test.urlobject' name = fields.Char('Name') class Model4Union1(ModelSQL): 'Model for union 1' __name__ = 'test.model.union1' name = fields.Char('Name') optional = fields.Char('Optional') class Model4Union2(ModelSQL): 'Model for union 2' __name__ = 'test.model.union2' name = fields.Char('Name') class Model4Union3(ModelSQL): 'Model for union 3' __name__ = 'test.model.union3' name = fields.Char('Name') class Model4Union4(ModelSQL): 'Model for union 4' __name__ = 'test.model.union4' name = fields.Char('Name') class Union(UnionMixin, ModelSQL): 'Union' __name__ = 'test.union' name = fields.Char('Name') optional = fields.Char('Optional') @staticmethod def union_models(): return ['test.model.union%s' % i for i in range(1, 4)] class UnionUnion(UnionMixin, ModelSQL): 'Union of union' __name__ = 'test.union.union' name = fields.Char('Name') @staticmethod def union_models(): return ['test.union', 'test.model.union4'] class Model4UnionTree1(ModelSQL): 'Model for union tree 1' __name__ = 'test.model.union.tree1' name = fields.Char('Name') class Model4UnionTree2(ModelSQL): 'Model for union tree 2' __name__ = 'test.model.union.tree2' name = fields.Char('Name') parent = fields.Many2One('test.model.union.tree1', 'Parent') class UnionTree(UnionMixin, ModelSQL): 'Union tree' __name__ = 'test.union.tree' name = fields.Char('Name') parent = fields.Many2One('test.union.tree', 'Parent') childs = fields.One2Many('test.union.tree', 'parent', 'Childs') @staticmethod def union_models(): return ['test.model.union.tree1', 'test.model.union.tree2'] class SequenceOrderedModel(sequence_ordered(), ModelSQL): 'Sequence Ordered Model' __name__ = 'test.order.sequence' def register(module): Pool.register( Model, ModelParent, ModelChild, ModelChildChild, ModelContext, ModelContextParent, ModelDefault, Singleton, URLObject, Model4Union1, Model4Union2, Model4Union3, Model4Union4, Union, UnionUnion, Model4UnionTree1, Model4UnionTree2, UnionTree, SequenceOrderedModel, module=module, type_='model')