The __rpc__ attribute is currently filled by method in ModelView. Allowing fields to define themselves what endpoints should be remotely callable make this process more flexible. issue4044 review30991002
109 lines
2.9 KiB
Python
109 lines
2.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 trytond.model import ModelView, fields
|
|
|
|
|
|
__all__ = [
|
|
'ModelViewChangedValues',
|
|
'ModelViewChangedValuesTarget',
|
|
'ModelViewButton',
|
|
'ModelViewRPC',
|
|
]
|
|
|
|
|
|
class ModelViewChangedValues(ModelView):
|
|
'ModelView Changed Values'
|
|
__name__ = 'test.modelview.changed_values'
|
|
name = fields.Char('Name')
|
|
target = fields.Many2One('test.modelview.changed_values.target', 'Target')
|
|
ref_target = fields.Reference('Target Reference', [
|
|
('test.modelview.changed_values.target', 'Target'),
|
|
])
|
|
targets = fields.One2Many('test.modelview.changed_values.target', 'model',
|
|
'Targets')
|
|
m2m_targets = fields.Many2Many('test.modelview.changed_values.target',
|
|
None, None, 'Targets')
|
|
|
|
|
|
class ModelViewChangedValuesTarget(ModelView):
|
|
'ModelView Changed Values Target'
|
|
__name__ = 'test.modelview.changed_values.target'
|
|
name = fields.Char('Name')
|
|
parent = fields.Many2One('test.modelview.changed_values', 'Parent')
|
|
|
|
|
|
class ModelViewButton(ModelView):
|
|
'ModelView Button'
|
|
__name__ = 'test.modelview.button'
|
|
value = fields.Integer("Value")
|
|
|
|
@classmethod
|
|
def __setup__(cls):
|
|
super(ModelViewButton, cls).__setup__()
|
|
cls._buttons = {
|
|
'test': {},
|
|
}
|
|
|
|
@classmethod
|
|
@ModelView.button
|
|
def test(cls, records):
|
|
cls.test_non_decorated(records)
|
|
|
|
@classmethod
|
|
def test_non_decorated(cls, records):
|
|
pass
|
|
|
|
|
|
class ModelViewRPC(ModelView):
|
|
'ModelView RPC'
|
|
__name__ = 'test.modelview.rpc'
|
|
|
|
selection = fields.Selection([('a', 'A')], 'Selection')
|
|
computed_selection = fields.Selection(
|
|
'get_selection', 'Computed Selection')
|
|
function_selection = fields.Function(
|
|
fields.Selection('get_function_selection', 'Function Selection'),
|
|
'function_selection_getter')
|
|
|
|
reference = fields.Reference('Reference', selection=[('a', 'A')])
|
|
computed_reference = fields.Reference(
|
|
'Computed reference', selection='get_reference')
|
|
function_reference = fields.Function(
|
|
fields.Reference('Function Reference',
|
|
selection='get_function_reference'),
|
|
'function_reference_getter')
|
|
|
|
integer = fields.Integer('Integer')
|
|
float = fields.Float('Float')
|
|
char = fields.Char('Char')
|
|
|
|
@fields.depends('selection')
|
|
def on_change_with_integer(self):
|
|
pass
|
|
|
|
@fields.depends('reference')
|
|
def on_change_float(self):
|
|
pass
|
|
|
|
@fields.depends('integer')
|
|
def autocomplete_char(self):
|
|
pass
|
|
|
|
@classmethod
|
|
def get_selection(cls):
|
|
pass
|
|
|
|
@classmethod
|
|
def get_function_selection(cls):
|
|
pass
|
|
|
|
@classmethod
|
|
def get_reference(cls):
|
|
pass
|
|
|
|
@classmethod
|
|
def get_function_reference(cls):
|
|
pass
|