Files
tradon/tests/multivalue.py
2025-12-26 13:11:43 +00:00

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')