194 lines
4.6 KiB
Python
Executable File
194 lines
4.6 KiB
Python
Executable File
# 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')
|