Send only the required fields when fetching a readonly view definition

issue11134
review380081002
This commit is contained in:
Nicolas Évrard
2022-04-08 19:07:13 +02:00
parent b98d09b59c
commit f899bda258
3 changed files with 10 additions and 17 deletions
+3 -6
View File
@@ -28,8 +28,7 @@ class Address(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView):
party = fields.Many2One('party.party', 'Party', required=True,
ondelete='CASCADE', select=True, states={
'readonly': Eval('id', 0) > 0,
},
depends=['id'])
})
party_name = fields.Char(
"Party Name",
help="If filled, replace the name of the party for address formatting")
@@ -54,8 +53,7 @@ class Address(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView):
('type', 'in', Eval('subdivision_types', [])),
()
),
],
depends=['country', 'subdivision_types'])
])
full_address = fields.Function(fields.Text('Full Address'),
'get_full_address')
identifiers = fields.One2Many(
@@ -63,8 +61,7 @@ class Address(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView):
domain=[
('party', '=', Eval('party')),
('type', 'in', ['fr_siret']),
],
depends=['party'])
])
@classmethod
def __setup__(cls):
+7 -7
View File
@@ -48,9 +48,9 @@ class ContactMechanism(
type = fields.Selection(_TYPES, "Type", required=True, sort=False)
value = fields.Char("Value", select=True,
# Add all function fields to ensure to always fill them via on_change
depends=[
depends={
'email', 'website', 'skype', 'sip', 'other_value',
'value_compact'])
'value_compact'})
value_compact = fields.Char('Value Compact', readonly=True)
name = fields.Char("Name")
comment = fields.Text("Comment")
@@ -66,27 +66,27 @@ class ContactMechanism(
email = fields.Function(fields.Char('E-Mail', states={
'invisible': Eval('type') != 'email',
'required': Eval('type') == 'email',
}, depends=['value', 'type']),
}, depends={'value'}),
'get_value', setter='set_value')
website = fields.Function(fields.Char('Website', states={
'invisible': Eval('type') != 'website',
'required': Eval('type') == 'website',
}, depends=['value', 'type']),
}, depends={'value'}),
'get_value', setter='set_value')
skype = fields.Function(fields.Char('Skype', states={
'invisible': Eval('type') != 'skype',
'required': Eval('type') == 'skype',
}, depends=['value', 'type']),
}, depends={'value'}),
'get_value', setter='set_value')
sip = fields.Function(fields.Char('SIP', states={
'invisible': Eval('type') != 'sip',
'required': Eval('type') == 'sip',
}, depends=['value', 'type']),
}, depends={'value'}),
'get_value', setter='set_value')
other_value = fields.Function(fields.Char('Value', states={
'invisible': Eval('type').in_(['email', 'website', 'skype', 'sip']),
'required': ~Eval('type').in_(['email', 'website']),
}, depends=['value', 'type']),
}, depends={'value'}),
'get_value', setter='set_value')
url = fields.Function(fields.Char('URL', states={
'invisible': ~Eval('url'),
-4
View File
@@ -39,7 +39,6 @@ class Party(DeactivableMixin, ModelSQL, ModelView, MultiValueMixin):
states={
'readonly': Eval('code_readonly', True),
},
depends=['code_readonly'],
help="The unique identifier of the party.")
code_readonly = fields.Function(fields.Boolean('Code Readonly'),
'get_code_readonly')
@@ -98,7 +97,6 @@ class Party(DeactivableMixin, ModelSQL, ModelView, MultiValueMixin):
cls.active.states.update({
'readonly': Bool(Eval('replaced_by')),
})
cls.active.depends.append('replaced_by')
@classmethod
def __register__(cls, module_name):
@@ -627,7 +625,6 @@ class Identifier(sequence_ordered(), DeactivableMixin, ModelSQL, ModelView):
domain=[
('party', '=', Eval('party', -1)),
],
depends=['party', 'type_address'],
help="The address identified by this record.")
type = fields.Selection('get_types', 'Type')
type_string = type.translated('type')
@@ -893,7 +890,6 @@ class ReplaceAsk(ModelView):
domain=[
('id', '!=', Eval('source', -1)),
],
depends=['source'],
help="The party that replaces.")
@classmethod