Files
tryton/trytond/tests/test.py
T

786 lines
22 KiB
Python
Raw Normal View History

2014-12-02 12:54:01 +01:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
2009-05-13 12:40:31 +02:00
2009-11-06 18:40:07 +01:00
import datetime
from decimal import Decimal
from trytond.model import ModelSQL, DictSchemaMixin, fields, Unique
from trytond.pyson import Eval
2009-05-13 12:40:31 +02:00
2012-09-24 22:16:53 +02:00
__all__ = [
'Boolean', 'BooleanDefault',
'Integer', 'IntegerDefault', 'IntegerRequired', 'IntegerDomain',
2012-09-24 22:16:53 +02:00
'Float', 'FloatDefault', 'FloatRequired', 'FloatDigits',
'Numeric', 'NumericDefault', 'NumericRequired', 'NumericDigits',
'Char', 'CharDefault', 'CharRequired', 'CharSize', 'CharTranslate',
'Text', 'TextDefault', 'TextRequired', 'TextSize', 'TextTranslate',
'Date', 'DateDefault', 'DateRequired',
'DateTime', 'DateTimeDefault', 'DateTimeRequired', 'DateTimeFormat',
'Time', 'TimeDefault', 'TimeRequired', 'TimeFormat',
2015-02-09 22:58:56 +01:00
'TimeDelta', 'TimeDeltaDefault', 'TimeDeltaRequired',
2012-09-24 22:16:53 +02:00
'One2One', 'One2OneTarget', 'One2OneRelation', 'One2OneRequired',
'One2OneRequiredRelation', 'One2OneDomain', 'One2OneDomainRelation',
2012-09-24 22:16:53 +02:00
'One2Many', 'One2ManyTarget',
'One2ManyRequired', 'One2ManyRequiredTarget',
'One2ManyReference', 'One2ManyReferenceTarget',
'One2ManySize', 'One2ManySizeTarget',
'One2ManySizePYSON', 'One2ManySizePYSONTarget',
'Many2Many', 'Many2ManyTarget', 'Many2ManyRelation',
'Many2ManyRequired', 'Many2ManyRequiredTarget',
'Many2ManyRequiredRelation',
'Many2ManyReference', 'Many2ManyReferenceTarget',
'Many2ManyReferenceRelation',
'Many2ManySize', 'Many2ManySizeTarget', 'Many2ManySizeRelation',
2015-11-05 23:22:26 +01:00
'Many2ManyTree', 'Many2ManyTreeRelation',
2012-09-24 22:16:53 +02:00
'Reference', 'ReferenceTarget', 'ReferenceRequired',
'Property',
'Selection', 'SelectionRequired',
2014-11-27 22:20:43 +01:00
'DictSchema', 'Dict', 'DictDefault', 'DictRequired',
2013-08-16 11:08:44 +02:00
'Binary', 'BinaryDefault', 'BinaryRequired',
'Many2OneDomainValidation', 'Many2OneTarget', 'Many2OneOrderBy',
2015-11-05 23:22:26 +01:00
'Many2OneSearch', 'Many2OneTree', 'Many2OneMPTT',
2012-09-24 22:16:53 +02:00
]
2009-05-13 12:40:31 +02:00
class Boolean(ModelSQL):
'Boolean'
2012-09-24 22:16:53 +02:00
__name__ = 'test.boolean'
boolean = fields.Boolean(string='Boolean', help='Test boolean')
2009-05-13 12:40:31 +02:00
class BooleanDefault(ModelSQL):
'Boolean Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.boolean_default'
boolean = fields.Boolean(string='Boolean', help='Test boolean')
2009-05-13 12:40:31 +02:00
2012-09-24 22:16:53 +02:00
@staticmethod
def default_boolean():
2009-05-13 12:40:31 +02:00
return True
2009-05-15 11:00:29 +02:00
class Integer(ModelSQL):
'Integer'
2012-09-24 22:16:53 +02:00
__name__ = 'test.integer'
2009-05-15 11:00:29 +02:00
integer = fields.Integer(string='Integer', help='Test integer',
required=False)
class IntegerDefault(ModelSQL):
'Integer Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.integer_default'
2009-05-15 11:00:29 +02:00
integer = fields.Integer(string='Integer', help='Test integer',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_integer():
2009-05-15 11:00:29 +02:00
return 5
2009-05-29 10:34:00 +02:00
class IntegerRequired(ModelSQL):
'Integer Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.integer_required'
integer = fields.Integer(string='Integer', help='Test integer',
required=True)
class IntegerDomain(ModelSQL):
'Integer Domain'
__name__ = 'test.integer_domain'
integer = fields.Integer('Integer', domain=[('integer', '>', 42)])
2009-05-29 10:34:00 +02:00
class Float(ModelSQL):
'Float'
2012-09-24 22:16:53 +02:00
__name__ = 'test.float'
2009-05-29 10:34:00 +02:00
float = fields.Float(string='Float', help='Test float',
required=False)
class FloatDefault(ModelSQL):
'Float Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.float_default'
2009-05-29 10:34:00 +02:00
float = fields.Float(string='Float', help='Test float',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_float():
2009-05-29 10:34:00 +02:00
return 5.5
class FloatRequired(ModelSQL):
'Float Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.float_required'
float = fields.Float(string='Float', help='Test float',
required=True)
2009-06-13 11:26:26 +02:00
class FloatDigits(ModelSQL):
'Float Digits'
2012-09-24 22:16:53 +02:00
__name__ = 'test.float_digits'
digits = fields.Integer('Digits')
float = fields.Float(string='Float', help='Test float',
2011-08-04 16:53:58 +02:00
required=False, digits=(16, Eval('digits', 2)),
depends=['digits'])
2009-06-13 11:26:26 +02:00
class Numeric(ModelSQL):
'Numeric'
2012-09-24 22:16:53 +02:00
__name__ = 'test.numeric'
2009-06-13 11:26:26 +02:00
numeric = fields.Numeric(string='Numeric', help='Test numeric',
required=False)
class NumericDefault(ModelSQL):
'Numeric Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.numeric_default'
2009-06-13 11:26:26 +02:00
numeric = fields.Numeric(string='Numeric', help='Test numeric',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_numeric():
return Decimal('5.5')
2009-06-13 11:26:26 +02:00
class NumericRequired(ModelSQL):
'Numeric Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.numeric_required'
2009-06-13 11:26:26 +02:00
numeric = fields.Numeric(string='Numeric', help='Test numeric',
required=True)
2009-06-23 10:25:22 +02:00
class NumericDigits(ModelSQL):
'Numeric Digits'
2012-09-24 22:16:53 +02:00
__name__ = 'test.numeric_digits'
digits = fields.Integer('Digits')
numeric = fields.Numeric(string='Numeric', help='Test numeric',
2011-08-04 16:53:58 +02:00
required=False, digits=(16, Eval('digits', 2)),
depends=['digits'])
2009-06-23 10:25:22 +02:00
class Char(ModelSQL):
'Char'
2012-09-24 22:16:53 +02:00
__name__ = 'test.char'
2009-06-23 10:25:22 +02:00
char = fields.Char(string='Char', size=None, help='Test char',
required=False)
class CharDefault(ModelSQL):
'Char Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.char_default'
2009-06-23 10:25:22 +02:00
char = fields.Char(string='Char', size=None, help='Test char',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_char():
2009-06-23 10:25:22 +02:00
return 'Test'
class CharRequired(ModelSQL):
'Char Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.char_required'
2009-06-23 10:25:22 +02:00
char = fields.Char(string='Char', size=None, help='Test char',
required=True)
class CharSize(ModelSQL):
'Char Size'
2012-09-24 22:16:53 +02:00
__name__ = 'test.char_size'
2009-06-23 10:25:22 +02:00
char = fields.Char(string='Char', size=5, help='Test char',
required=False)
2009-07-17 17:16:16 +02:00
class CharTranslate(ModelSQL):
'Char Translate'
2012-09-24 22:16:53 +02:00
__name__ = 'test.char_translate'
char = fields.Char(string='Char', size=None, help='Test char',
required=False, translate=True)
2009-07-17 17:16:16 +02:00
class Text(ModelSQL):
'Text'
2012-09-24 22:16:53 +02:00
__name__ = 'test.text'
2009-07-17 17:16:16 +02:00
text = fields.Text(string='Text', size=None, help='Test text',
required=False)
class TextDefault(ModelSQL):
'Text Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.text_default'
2009-07-17 17:16:16 +02:00
text = fields.Text(string='Text', size=None, help='Test text',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_text():
2009-07-17 17:16:16 +02:00
return 'Test'
class TextRequired(ModelSQL):
'Text Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.text_required'
2009-07-17 17:16:16 +02:00
text = fields.Text(string='Text', size=None, help='Test text',
required=True)
class TextSize(ModelSQL):
'Text Size'
2012-09-24 22:16:53 +02:00
__name__ = 'test.text_size'
2009-07-17 17:16:16 +02:00
text = fields.Text(string='Text', size=5, help='Test text',
required=False)
2009-07-24 17:27:22 +02:00
class TextTranslate(ModelSQL):
'Text Translate'
2012-09-24 22:16:53 +02:00
__name__ = 'test.text_translate'
text = fields.Text(string='Text', size=None, help='Test text',
required=False, translate=True)
2009-11-06 18:40:07 +01:00
class Date(ModelSQL):
'Date'
2012-09-24 22:16:53 +02:00
__name__ = 'test.date'
2009-11-06 18:40:07 +01:00
date = fields.Date(string='Date', help='Test date',
required=False)
class DateDefault(ModelSQL):
'Date Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.date_default'
2009-11-06 18:40:07 +01:00
date = fields.Date(string='Date', help='Test date',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_date():
2009-11-06 18:40:07 +01:00
return datetime.date(2000, 1, 1)
class DateRequired(ModelSQL):
'Date Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.date_required'
2009-11-06 18:40:07 +01:00
date = fields.Date(string='Date', help='Test date',
required=True)
2009-11-10 14:01:00 +01:00
class DateTime(ModelSQL):
'DateTime'
2012-09-24 22:16:53 +02:00
__name__ = 'test.datetime'
2009-11-10 14:01:00 +01:00
datetime = fields.DateTime(string='DateTime', help='Test datetime',
required=False)
class DateTimeDefault(ModelSQL):
'DateTime Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.datetime_default'
2009-11-10 14:01:00 +01:00
datetime = fields.DateTime(string='DateTime', help='Test datetime',
required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_datetime():
2009-11-10 14:01:00 +01:00
return datetime.datetime(2000, 1, 1, 12, 0, 0, 0)
class DateTimeRequired(ModelSQL):
'DateTime Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.datetime_required'
2009-11-10 14:01:00 +01:00
datetime = fields.DateTime(string='DateTime', help='Test datetime',
required=True)
2010-12-03 18:01:46 +01:00
2012-05-16 13:04:36 +02:00
class DateTimeFormat(ModelSQL):
'DateTime Format'
2012-09-24 22:16:53 +02:00
__name__ = 'test.datetime_format'
2012-05-16 13:04:36 +02:00
datetime = fields.DateTime(string='DateTime', format='%H:%M')
2012-02-07 16:11:22 +01:00
class Time(ModelSQL):
'Time'
2012-09-24 22:16:53 +02:00
__name__ = 'test.time'
2012-02-07 16:11:22 +01:00
time = fields.Time(string='Time', help='Test time', required=False)
class TimeDefault(ModelSQL):
'Time Default'
2012-09-24 22:16:53 +02:00
__name__ = 'test.time_default'
2012-02-07 16:11:22 +01:00
time = fields.Time(string='Time', help='Test time', required=False)
2012-09-24 22:16:53 +02:00
@staticmethod
def default_time():
2012-02-07 16:11:22 +01:00
return datetime.time(16, 30)
class TimeRequired(ModelSQL):
'Time'
2012-09-24 22:16:53 +02:00
__name__ = 'test.time_required'
2012-02-07 16:11:22 +01:00
time = fields.Time(string='Time', help='Test time', required=True)
2012-05-16 13:04:36 +02:00
class TimeFormat(ModelSQL):
'Time Format'
2012-09-24 22:16:53 +02:00
__name__ = 'test.time_format'
2012-05-16 13:04:36 +02:00
time = fields.Time(string='Time', format='%H:%M')
2015-02-09 22:58:56 +01:00
class TimeDelta(ModelSQL):
'TimeDelta'
__name__ = 'test.timedelta'
timedelta = fields.TimeDelta(string='TimeDelta', help='Test timedelta',
required=False)
class TimeDeltaDefault(ModelSQL):
'TimeDelta Default'
__name__ = 'test.timedelta_default'
timedelta = fields.TimeDelta(string='TimeDelta', help='Test timedelta',
required=False)
@staticmethod
def default_timedelta():
return datetime.timedelta(seconds=3600)
class TimeDeltaRequired(ModelSQL):
'TimeDelta Required'
__name__ = 'test.timedelta_required'
timedelta = fields.TimeDelta(string='TimeDelta', help='Test timedelta',
required=True)
2010-12-03 18:01:46 +01:00
class One2One(ModelSQL):
'One2One'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2one'
2010-12-03 18:01:46 +01:00
name = fields.Char('Name', required=True)
one2one = fields.One2One('test.one2one.relation', 'origin', 'target',
string='One2One', help='Test one2one', required=False)
class One2OneTarget(ModelSQL):
'One2One Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2one.target'
2010-12-03 18:01:46 +01:00
name = fields.Char('Name', required=True)
class One2OneRelation(ModelSQL):
'One2One Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2one.relation'
2010-12-03 18:01:46 +01:00
origin = fields.Many2One('test.one2one', 'Origin')
target = fields.Many2One('test.one2one.target', 'Target')
2012-09-24 22:16:53 +02:00
@classmethod
def __setup__(cls):
super(One2OneRelation, cls).__setup__()
table = cls.__table__()
2012-09-24 22:16:53 +02:00
cls._sql_constraints += [
('origin_unique', Unique(table, table.origin),
2010-12-03 18:01:46 +01:00
'Origin must be unique'),
('target_unique', Unique(table, table.target),
2010-12-03 18:01:46 +01:00
'Target must be unique'),
2012-09-24 22:16:53 +02:00
]
2010-12-03 18:01:46 +01:00
class One2OneRequired(ModelSQL):
'One2One'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2one_required'
2010-12-03 18:01:46 +01:00
name = fields.Char('Name', required=True)
2012-04-01 23:08:15 +02:00
one2one = fields.One2One('test.one2one_required.relation', 'origin',
'target', string='One2One', help='Test one2one', required=True)
2010-12-03 18:01:46 +01:00
class One2OneRequiredRelation(ModelSQL):
'One2One Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2one_required.relation'
2010-12-03 18:01:46 +01:00
origin = fields.Many2One('test.one2one_required', 'Origin')
target = fields.Many2One('test.one2one.target', 'Target')
2012-09-24 22:16:53 +02:00
@classmethod
def __setup__(cls):
super(One2OneRequiredRelation, cls).__setup__()
table = cls.__table__()
2012-09-24 22:16:53 +02:00
cls._sql_constraints += [
('origin_unique', Unique(table, table.origin),
2010-12-03 18:01:46 +01:00
'Origin must be unique'),
('target_unique', Unique(table, table.target),
2010-12-03 18:01:46 +01:00
'Target must be unique'),
2012-09-24 22:16:53 +02:00
]
2010-12-03 18:01:46 +01:00
class One2OneDomain(ModelSQL):
'One2One'
__name__ = 'test.one2one_domain'
name = fields.Char('Name', required=True)
one2one = fields.One2One('test.one2one_domain.relation', 'origin',
'target', string='One2One', help='Test one2one',
domain=[('name', '=', 'domain')])
class One2OneDomainRelation(ModelSQL):
'One2One Relation'
__name__ = 'test.one2one_domain.relation'
origin = fields.Many2One('test.one2one_domain', 'Origin')
target = fields.Many2One('test.one2one.target', 'Target')
@classmethod
def __setup__(cls):
super(One2OneDomainRelation, cls).__setup__()
table = cls.__table__()
cls._sql_constraints += [
('origin_unique', Unique(table, table.origin),
'Origin must be unique'),
('target_unique', Unique(table, table.target),
'Target must be unique'),
]
class One2Many(ModelSQL):
'One2Many Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many'
name = fields.Char('Name', required=True)
targets = fields.One2Many('test.one2many.target', 'origin', 'Targets')
class One2ManyTarget(ModelSQL):
'One2Many Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many.target'
name = fields.Char('Name', required=True)
origin = fields.Many2One('test.one2many', 'Origin')
2012-06-13 23:24:47 +02:00
class One2ManyRequired(ModelSQL):
'One2Many Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_required'
2012-06-13 23:24:47 +02:00
name = fields.Char('Name', required=True)
targets = fields.One2Many('test.one2many_required.target', 'origin',
'Targets', required=True)
class One2ManyRequiredTarget(ModelSQL):
'One2Many Required Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_required.target'
2012-06-13 23:24:47 +02:00
name = fields.Char('Name', required=True)
origin = fields.Many2One('test.one2many_required', 'Origin')
class One2ManyReference(ModelSQL):
'One2Many Reference Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_reference'
name = fields.Char('Name', required=True)
targets = fields.One2Many('test.one2many_reference.target', 'origin',
'Targets')
class One2ManyReferenceTarget(ModelSQL):
'One2Many Reference Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_reference.target'
name = fields.Char('Name', required=True)
origin = fields.Reference('Origin', [
2012-12-13 19:18:37 +01:00
(None, ''),
('test.one2many_reference', 'One2Many Reference'),
])
class One2ManySize(ModelSQL):
'One2Many Size Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_size'
targets = fields.One2Many('test.one2many_size.target', 'origin', 'Targets',
size=3)
class One2ManySizeTarget(ModelSQL):
'One2Many Size Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_size.target'
origin = fields.Many2One('test.one2many_size', 'Origin')
class One2ManySizePYSON(ModelSQL):
'One2Many Size PYSON Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_size_pyson'
limit = fields.Integer('Limit')
targets = fields.One2Many('test.one2many_size_pyson.target', 'origin',
'Targets', size=Eval('limit', 0))
class One2ManySizePYSONTarget(ModelSQL):
'One2Many Size PYSON Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.one2many_size_pyson.target'
origin = fields.Many2One('test.one2many_size_pyson', 'Origin')
class Many2Many(ModelSQL):
'Many2Many'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many'
name = fields.Char('Name', required=True)
targets = fields.Many2Many('test.many2many.relation', 'origin', 'target',
'Targets')
class Many2ManyTarget(ModelSQL):
'Many2Many Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many.target'
name = fields.Char('Name', required=True)
class Many2ManyRelation(ModelSQL):
'Many2Many Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many.relation'
origin = fields.Many2One('test.many2many', 'Origin')
target = fields.Many2One('test.many2many.target', 'Target')
2012-06-13 23:24:47 +02:00
class Many2ManyRequired(ModelSQL):
'Many2Many Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_required'
2012-06-13 23:24:47 +02:00
name = fields.Char('Name', required=True)
2012-06-15 12:07:29 +02:00
targets = fields.Many2Many('test.many2many_required.relation', 'origin',
'target', 'Targets', required=True)
2012-06-13 23:24:47 +02:00
class Many2ManyRequiredTarget(ModelSQL):
'Many2Many Required Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_required.target'
2012-06-13 23:24:47 +02:00
name = fields.Char('Name', required=True)
class Many2ManyRequiredRelation(ModelSQL):
'Many2Many Required Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_required.relation'
2012-06-15 12:07:29 +02:00
origin = fields.Many2One('test.many2many_required', 'Origin')
target = fields.Many2One('test.many2many_required.target', 'Target')
2012-06-13 23:24:47 +02:00
class Many2ManyReference(ModelSQL):
'Many2Many Reference'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_reference'
name = fields.Char('Name', required=True)
targets = fields.Many2Many('test.many2many_reference.relation', 'origin',
'target', 'Targets')
class Many2ManyReferenceTarget(ModelSQL):
'Many2Many Reference Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_reference.target'
name = fields.Char('Name', required=True)
class Many2ManyReferenceRelation(ModelSQL):
'Many2Many Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_reference.relation'
origin = fields.Reference('Origin', [
2012-12-13 19:18:37 +01:00
(None, ''),
('test.many2many_reference', 'Many2Many Reference'),
])
target = fields.Many2One('test.many2many_reference.target',
'Reference Target')
class Many2ManySize(ModelSQL):
'Many2Many Size Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_size'
targets = fields.Many2Many('test.many2many_size.relation', 'origin',
'target', 'Targets', size=5)
class Many2ManySizeTarget(ModelSQL):
'Many2Many Size Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_size.target'
name = fields.Char('Name')
class Many2ManySizeRelation(ModelSQL):
'Many2Many Size Relation'
2012-09-24 22:16:53 +02:00
__name__ = 'test.many2many_size.relation'
origin = fields.Many2One('test.many2many_size', 'Origin')
target = fields.Many2One('test.many2many_size.target', 'Target')
2015-11-05 23:22:26 +01:00
class Many2ManyTree(ModelSQL):
'Many2Many Tree'
__name__ = 'test.many2many_tree'
parents = fields.Many2Many('test.many2many_tree.relation',
'child', 'parent', 'Parents')
children = fields.Many2Many('test.many2many_tree.relation',
'parent', 'child', 'Children')
class Many2ManyTreeRelation(ModelSQL):
'Many2Many Tree Relation'
__name__ = 'test.many2many_tree.relation'
parent = fields.Many2One('test.many2many_tree', 'Parent')
child = fields.Many2One('test.many2many_tree', 'Child')
2012-07-25 21:01:29 +02:00
class Reference(ModelSQL):
'Reference'
2012-09-24 22:16:53 +02:00
__name__ = 'test.reference'
2012-07-25 21:01:29 +02:00
name = fields.Char('Name', required=True)
reference = fields.Reference('Reference', selection=[
2012-12-13 19:18:37 +01:00
(None, ''),
2012-07-25 21:01:29 +02:00
('test.reference.target', 'Target'),
])
class ReferenceTarget(ModelSQL):
'Reference Target'
2012-09-24 22:16:53 +02:00
__name__ = 'test.reference.target'
2012-07-25 21:01:29 +02:00
name = fields.Char('Name', required=True)
class ReferenceRequired(ModelSQL):
'Reference Required'
2012-09-24 22:16:53 +02:00
__name__ = 'test.reference_required'
2012-07-25 21:01:29 +02:00
name = fields.Char('Name', required=True)
reference = fields.Reference('Reference', selection=[
2012-12-13 19:18:37 +01:00
(None, ''),
2012-07-25 21:01:29 +02:00
('test.reference.target', 'Target'),
], required=True)
2012-07-25 21:01:29 +02:00
class Property(ModelSQL):
'Property'
2012-09-24 22:16:53 +02:00
__name__ = 'test.property'
char = fields.Property(fields.Char('Test Char'))
many2one = fields.Property(fields.Many2One('test.char',
'Test Many2One'))
numeric = fields.Property(fields.Numeric('Test Numeric'))
selection = fields.Property(fields.Selection([
2012-12-13 19:18:37 +01:00
(None, ''),
('option_a', 'Option A'),
('option_b', 'Option B')
], 'Test Selection'))
2013-01-26 15:18:41 +01:00
class Selection(ModelSQL):
'Selection'
__name__ = 'test.selection'
select = fields.Selection([
('', ''), ('arabic', 'Arabic'), ('hexa', 'Hexadecimal')],
'Selection')
select_string = select.translated('select')
dyn_select = fields.Selection('get_selection',
2014-01-26 14:27:24 +01:00
'Instance Dynamic Selection')
dyn_select_static = fields.Selection('static_selection',
'Static Selection')
2014-01-26 14:27:24 +01:00
@fields.depends('select')
def get_selection(self):
if self.select == 'arabic':
return [('', '')] + [(str(i), str(i)) for i in range(1, 11)]
else:
return [('', '')] + [(hex(i), hex(i)) for i in range(1, 11)]
@staticmethod
def static_selection():
return [('', '')] + [(str(i), str(i)) for i in range(1, 11)]
class SelectionRequired(ModelSQL):
'Selection Required'
__name__ = 'test.selection_required'
select = fields.Selection([('arabic', 'Arabic'), ('latin', 'Latin')],
'Selection', required=True)
2014-11-27 22:20:43 +01:00
class DictSchema(DictSchemaMixin, ModelSQL):
'Dict Schema'
__name__ = 'test.dict.schema'
2013-01-26 15:18:41 +01:00
class Dict(ModelSQL):
'Dict'
__name__ = 'test.dict'
2014-11-27 22:20:43 +01:00
dico = fields.Dict('test.dict.schema', 'Test Dict')
dico_string = dico.translated('dico')
dico_string_keys = dico.translated('dico', 'keys')
2013-01-26 15:18:41 +01:00
class DictDefault(ModelSQL):
'Dict Default'
__name__ = 'test.dict_default'
dico = fields.Dict(None, 'Test Dict')
2013-01-26 15:18:41 +01:00
@staticmethod
def default_dico():
return dict(a=1)
class DictRequired(ModelSQL):
'Dict Required'
__name__ = 'test.dict_required'
dico = fields.Dict(None, 'Test Dict', required=True)
2013-08-16 11:08:44 +02:00
class Binary(ModelSQL):
'Binary'
__name__ = 'test.binary'
binary = fields.Binary('Binary')
class BinaryDefault(ModelSQL):
'Binary Default'
__name__ = 'test.binary_default'
binary = fields.Binary('Binary Default')
@staticmethod
def default_binary():
2015-03-16 19:28:34 +01:00
return b'default'
2013-08-16 11:08:44 +02:00
class BinaryRequired(ModelSQL):
'Binary Required'
__name__ = 'test.binary_required'
binary = fields.Binary('Binary Required', required=True)
class Many2OneTarget(ModelSQL):
"Many2One Domain Validation Target"
__name__ = 'test.many2one_target'
_order_name = 'value'
active = fields.Boolean('Active')
value = fields.Integer('Value')
@staticmethod
def default_active():
return True
class Many2OneDomainValidation(ModelSQL):
"Many2One Domain Validation"
__name__ = 'test.many2one_domainvalidation'
many2one = fields.Many2One('test.many2one_target',
'many2one',
domain=[
('value', '>', 5),
])
dummy = fields.Char('Dummy')
class Many2OneOrderBy(ModelSQL):
"Many2One OrderBy"
__name__ = 'test.many2one_orderby'
many2one = fields.Many2One('test.many2one_target', 'many2one')
2015-06-15 01:10:59 +02:00
class Many2OneSearch(ModelSQL):
"Many2One Search"
__name__ = 'test.many2one_search'
many2one = fields.Many2One('test.many2one_target', 'many2one')
2015-11-05 23:22:26 +01:00
class Many2OneTree(ModelSQL):
'Many2One Tree'
__name__ = 'test.many2one_tree'
many2one = fields.Many2One('test.many2one_tree', 'many2one')
class Many2OneMPTT(ModelSQL):
'Many2One MPTT'
__name__ = 'test.many2one_mptt'
many2one = fields.Many2One('test.many2one_mptt', 'many2one',
left='left', right='right')
left = fields.Integer('Left', required=True)
right = fields.Integer('Right', required=True)
@classmethod
def default_left(cls):
return 0
@classmethod
def default_right(cls):
return 0