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:12 +02:00
parent c67e70ce3c
commit a8022be3b0
2 changed files with 31 additions and 50 deletions
+4 -6
View File
@@ -19,7 +19,7 @@ class Journal(DeactivableMixin, ModelSQL, ModelView):
context={
'company': Eval('company', -1),
},
depends=['company'])
depends={'company'})
currency = fields.Many2One('currency.currency', 'Currency', required=True)
company = fields.Many2One('company.company', 'Company', required=True,
select=True)
@@ -29,7 +29,7 @@ class Journal(DeactivableMixin, ModelSQL, ModelView):
context={
'company': Eval('company', -1),
},
depends=['company']),
depends={'company'}),
'on_change_with_company_party')
validation = fields.Selection([
('balance', 'Balance'),
@@ -41,16 +41,14 @@ class Journal(DeactivableMixin, ModelSQL, ModelView):
domain=[
('owners.id', '=', Eval('company_party', -1)),
('currency', '=', Eval('currency', -1)),
],
depends=['company_party', 'currency'])
])
account = fields.Many2One('account.account', "Account", required=True,
domain=[
('type', '!=', None),
('closed', '!=', True),
('company', '=', Eval('company')),
('party_required', '=', False),
],
depends=['company'])
])
@classmethod
def __setup__(cls):
+27 -44
View File
@@ -53,30 +53,26 @@ class Statement(Workflow, ModelSQL, ModelView):
__name__ = 'account.statement'
_states = {'readonly': Eval('state') != 'draft'}
_depends = ['state']
_balance_states = _states.copy()
_balance_states.update({
'invisible': ~Eval('validation', '').in_(['balance']),
'required': Eval('validation', '').in_(['balance']),
})
_balance_depends = _depends + ['validation']
_amount_states = _states.copy()
_amount_states.update({
'invisible': ~Eval('validation', '').in_(['amount']),
'required': Eval('validation', '').in_(['amount']),
})
_amount_depends = _depends + ['validation']
_number_states = _states.copy()
_number_states.update({
'invisible': ~Eval('validation', '').in_(['number_of_lines']),
'required': Eval('validation', '').in_(['number_of_lines']),
})
_number_depends = _depends + ['validation']
name = fields.Char('Name', required=True)
company = fields.Many2One(
'company.company', "Company", required=True, select=True,
states=_states, depends=_depends)
states=_states)
journal = fields.Many2One('account.statement.journal', 'Journal',
required=True, select=True,
domain=[
@@ -84,36 +80,33 @@ class Statement(Workflow, ModelSQL, ModelView):
],
states={
'readonly': (Eval('state') != 'draft') | Eval('lines', [0]),
},
depends=['state', 'company'])
})
currency = fields.Function(fields.Many2One(
'currency.currency', "Currency"), 'on_change_with_currency')
date = fields.Date('Date', required=True, select=True)
start_balance = Monetary(
"Start Balance", currency='currency', digits='currency',
states=_balance_states, depends=_balance_depends)
states=_balance_states)
end_balance = Monetary(
"End Balance", currency='currency', digits='currency',
states=_balance_states, depends=_balance_depends)
states=_balance_states)
balance = fields.Function(Monetary(
"Balance", currency='currency', digits='currency',
states=_balance_states, depends=_balance_depends),
states=_balance_states),
'on_change_with_balance')
total_amount = Monetary(
"Total Amount", currency='currency', digits='currency',
states=_amount_states, depends=_amount_depends)
states=_amount_states)
number_of_lines = fields.Integer('Number of Lines',
states=_number_states, depends=_number_depends)
states=_number_states)
lines = fields.One2Many('account.statement.line', 'statement',
'Lines', states={
'readonly': (Eval('state') != 'draft') | ~Eval('journal'),
},
depends=['state', 'journal'])
})
origins = fields.One2Many('account.statement.origin', 'statement',
"Origins", states={
'readonly': Eval('state') != 'draft',
},
depends=['state'])
})
origin_file = fields.Binary(
"Origin File", readonly=True,
file_id=file_id, store_prefix=store_prefix)
@@ -129,10 +122,10 @@ class Statement(Workflow, ModelSQL, ModelView):
to_reconcile = fields.Function(
fields.Boolean("To Reconcile"), 'get_to_reconcile')
del _states, _depends
del _balance_states, _balance_depends
del _amount_states, _amount_depends
del _number_states, _number_depends
del _states
del _balance_states
del _amount_states
del _number_states
@classmethod
def __setup__(cls):
@@ -663,13 +656,12 @@ class Statement(Workflow, ModelSQL, ModelView):
return new_statements
def origin_mixin(_states, _depends):
def origin_mixin(_states):
class Mixin:
__slots__ = ()
statement = fields.Many2One(
'account.statement', "Statement",
required=True, ondelete='CASCADE', states=_states,
depends=_depends)
required=True, ondelete='CASCADE', states=_states)
statement_state = fields.Function(
fields.Selection('get_statement_states', "Statement State"),
'on_change_with_statement_state')
@@ -678,10 +670,10 @@ def origin_mixin(_states, _depends):
'on_change_with_company', searcher='search_company')
number = fields.Char("Number")
date = fields.Date(
"Date", required=True, states=_states, depends=_depends)
"Date", required=True, states=_states)
amount = Monetary(
"Amount", currency='currency', digits='currency', required=True,
states=_states, depends=_depends)
states=_states)
currency = fields.Function(fields.Many2One(
'currency.currency', "Currency"), 'on_change_with_currency')
party = fields.Many2One(
@@ -689,7 +681,7 @@ def origin_mixin(_states, _depends):
context={
'company': Eval('company', -1),
},
depends=_depends + ['company'])
depends={'company'})
account = fields.Many2One(
'account.account', "Account",
domain=[
@@ -700,9 +692,8 @@ def origin_mixin(_states, _depends):
context={
'date': Eval('date'),
},
states=_states, depends=_depends + ['company', 'date'])
description = fields.Char(
"Description", states=_states, depends=_depends)
states=_states, depends={'date'})
description = fields.Char("Description", states=_states)
@classmethod
def __setup__(cls):
@@ -740,12 +731,9 @@ def origin_mixin(_states, _depends):
_states = {
'readonly': Eval('statement_state') != 'draft',
}
_depends = ['statement_state']
class Line(
origin_mixin(_states, _depends), sequence_ordered(),
ModelSQL, ModelView):
class Line(origin_mixin(_states), sequence_ordered(), ModelSQL, ModelView):
'Account Statement Line'
__name__ = 'account.statement.line'
@@ -771,8 +759,7 @@ class Line(
],
},
states=_states,
context={'with_payment': False},
depends=['company', 'party', 'account'] + _depends)
context={'with_payment': False})
origin = fields.Many2One('account.statement.origin', 'Origin',
readonly=True,
states={
@@ -781,8 +768,7 @@ class Line(
domain=[
('statement', '=', Eval('statement', -1)),
('date', '=', Eval('date', None)),
],
depends=['statement', 'date'])
])
@classmethod
def __setup__(cls):
@@ -792,7 +778,6 @@ class Line(
'readonly': (cls.date.states['readonly']
| Bool(Eval('origin', 0))),
})
cls.date.depends.append('origin')
cls.account.required = True
t = cls.__table__()
cls._sql_constraints += [
@@ -1046,7 +1031,7 @@ class Line(
)
del _states, _depends
del _states
class LineGroup(ModelSQL, ModelView):
@@ -1120,10 +1105,9 @@ class LineGroup(ModelSQL, ModelView):
_states = {
'readonly': (Eval('statement_state') != 'draft') | Eval('lines', []),
}
_depends = ['statement_state']
class Origin(origin_mixin(_states, _depends), ModelSQL, ModelView):
class Origin(origin_mixin(_states), ModelSQL, ModelView):
"Account Statement Origin"
__name__ = 'account.statement.origin'
_rec_name = 'number'
@@ -1137,8 +1121,7 @@ class Origin(origin_mixin(_states, _depends), ModelSQL, ModelView):
domain=[
('statement', '=', Eval('statement', -1)),
('date', '=', Eval('date', None)),
],
depends=['statement', 'date', 'statement_id'])
])
statement_id = fields.Function(
fields.Integer("Statement ID"), 'on_change_with_statement_id')
pending_amount = fields.Function(Monetary(
@@ -1192,7 +1175,7 @@ class Origin(origin_mixin(_states, _depends), ModelSQL, ModelView):
return super().copy(origins, default=default)
del _states, _depends
del _states
class OriginInformation(DictSchemaMixin, ModelSQL, ModelView):