90 lines
2.8 KiB
Python
Executable File
90 lines
2.8 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 ModelSQL, MultiValueMixin, ValueMixin, fields
|
|
from trytond.pool import Pool
|
|
|
|
|
|
class ModelMultiValue(ModelSQL, MultiValueMixin):
|
|
"Model MultiValue"
|
|
__name__ = 'test.model_multivalue'
|
|
value = fields.MultiValue(fields.Char("Value"))
|
|
value_default = fields.MultiValue(fields.Char("Value Default"))
|
|
value_many2one = fields.MultiValue(
|
|
fields.Many2One('test.model_multivalue.target', "Value Many2One"))
|
|
value_multiselection = fields.MultiValue(
|
|
fields.MultiSelection([
|
|
('foo', "Foo"),
|
|
('bar', "Bar"),
|
|
], "Value Multi Selection"))
|
|
value_reference = fields.MultiValue(
|
|
fields.Reference(
|
|
"Value Reference",
|
|
selection=[
|
|
(None, ""),
|
|
('test.model_multivalue.target', "Target"),
|
|
]))
|
|
values = fields.One2Many(
|
|
'test.model_multivalue.value', 'record', "Values")
|
|
|
|
@classmethod
|
|
def multivalue_model(cls, field):
|
|
pool = Pool()
|
|
multivalue_fields = {
|
|
'value',
|
|
'value_default',
|
|
'value_many2one',
|
|
'value_multiselection',
|
|
'value_reference'
|
|
}
|
|
if field in multivalue_fields:
|
|
return pool.get('test.model_multivalue.value')
|
|
return super().multivalue_model(field)
|
|
|
|
@classmethod
|
|
def default_value(cls, **pattern):
|
|
return "default"
|
|
|
|
@classmethod
|
|
def default_value_default(cls, **pattern):
|
|
return "other default"
|
|
|
|
@classmethod
|
|
def default_value_multiselection(cls, **pattern):
|
|
return ('foo',)
|
|
|
|
|
|
class ModelValue(ModelSQL, ValueMixin):
|
|
"Model Value"
|
|
__name__ = 'test.model_multivalue.value'
|
|
record = fields.Many2One(
|
|
'test.model_multivalue', "Record")
|
|
condition = fields.Char("Condition")
|
|
value = fields.Char("Value")
|
|
value_default = fields.Char("Value Default")
|
|
value_many2one = fields.Many2One(
|
|
'test.model_multivalue.target', "Value Many2One")
|
|
value_multiselection = fields.MultiSelection([
|
|
('foo', "Foo"),
|
|
('bar', "Bar"),
|
|
], "Value Multi Selection")
|
|
value_reference = fields.Reference(
|
|
"Value Reference",
|
|
selection=[
|
|
(None, ""),
|
|
('test.model_multivalue.target', "Target"),
|
|
])
|
|
|
|
|
|
class ModelMultiValueTarget(ModelSQL):
|
|
"Model MultiValue Target"
|
|
__name__ = 'test.model_multivalue.target'
|
|
name = fields.Char("Name")
|
|
|
|
|
|
def register(module):
|
|
Pool.register(
|
|
ModelMultiValue,
|
|
ModelValue,
|
|
ModelMultiValueTarget,
|
|
module=module, type_='model')
|