Files
tryton/trytond/tests/modelsql.py
T
2019-01-30 09:45:59 +01:00

146 lines
3.9 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 sql.operators import Equal
from trytond.model import ModelSQL, fields, Check, Unique, Exclude
from trytond.pool import Pool
class ModelSQLRead(ModelSQL):
"ModelSQL to test read"
__name__ = 'test.modelsql.read'
name = fields.Char("Name")
target = fields.Many2One('test.modelsql.read.target', "Target")
targets = fields.One2Many('test.modelsql.read.target', 'parent', "Targets")
reference = fields.Reference(
"Reference", [(None, ""), ('test.modelsql.read.target', "Target")])
class ModelSQLReadTarget(ModelSQL):
"ModelSQL Target to test read"
__name__ = 'test.modelsql.read.target'
name = fields.Char("Name")
parent = fields.Many2One('test.modelsql.read', "Parent")
target = fields.Many2One('test.modelsql.read.target', "Target")
class ModelSQLRequiredField(ModelSQL):
'model with a required field'
__name__ = 'test.modelsql'
integer = fields.Integer(string="integer", required=True)
desc = fields.Char(string="desc", required=True)
class ModelSQLTimestamp(ModelSQL):
'Model to test timestamp'
__name__ = 'test.modelsql.timestamp'
class ModelSQLFieldSet(ModelSQL):
'Model to test field set'
__name__ = 'test.modelsql.field_set'
field = fields.Function(fields.Integer('Field'),
'get_field', setter='set_field')
def get_field(self, name=None):
return
@classmethod
def set_field(cls, records, name, value):
pass
class ModelSQLOne2Many(ModelSQL):
"ModelSQL One2Many"
__name__ = 'test.modelsql.one2many'
targets = fields.One2Many(
'test.modelsql.one2many.target', 'origin', "Targets")
class ModelSQLOne2ManyTarget(ModelSQL):
"ModelSQL One2Many Target"
__name__ = 'test.modelsql.one2many.target'
name = fields.Char("Name", required=True)
origin = fields.Many2One('test.modelsql.one2many', "Origin")
class NullOrder(ModelSQL):
"Null Order"
__name__ = 'test.modelsql.null_order'
integer = fields.Integer('Integer')
class ModelTranslation(ModelSQL):
"ModelSQL with translated field"
__name__ = 'test.modelsql.translation'
name = fields.Char("Name", translate=True)
class ModelCheck(ModelSQL):
"ModelSQL with check constraint"
__name__ = 'test.modelsql.check'
value = fields.Integer("Value")
@classmethod
def __setup__(cls):
super(ModelCheck, cls).__setup__()
t = cls.__table__()
cls._sql_constraints = [
('check', Check(t, (t.value > 42)),
"Value must be greater than 42."),
]
class ModelUnique(ModelSQL):
"ModelSQL with unique constraint"
__name__ = 'test.modelsql.unique'
value = fields.Integer("Value")
@classmethod
def __setup__(cls):
super(ModelUnique, cls).__setup__()
t = cls.__table__()
cls._sql_constraints = [
('unique', Unique(t, t.value), "Value must be unique."),
]
class ModelExclude(ModelSQL):
"ModelSQL with exclude constraint"
__name__ = 'test.modelsql.exclude'
value = fields.Integer("Value")
@classmethod
def __setup__(cls):
super(ModelExclude, cls).__setup__()
t = cls.__table__()
cls._sql_constraints = [
('exclude', Exclude(t, (t.value, Equal), where=t.value > 0),
"Value must be unique."),
]
class ModelLock(ModelSQL):
'Model to test lock'
__name__ = 'test.modelsql.lock'
def register(module):
Pool.register(
ModelSQLRead,
ModelSQLReadTarget,
ModelSQLRequiredField,
ModelSQLTimestamp,
ModelSQLFieldSet,
ModelSQLOne2Many,
ModelSQLOne2ManyTarget,
NullOrder,
ModelTranslation,
ModelCheck,
ModelUnique,
ModelExclude,
ModelLock,
module=module, type_='model')