From e2cc75acaeaf56fbd2f03bcd017dea4136672d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 11 Oct 2022 00:44:49 +0200 Subject: [PATCH] Use declarative index definition for ModelSQL issue5757 review361251002 --- payment.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/payment.py b/payment.py index 2d25dd48c9..8c69d3fbe7 100644 --- a/payment.py +++ b/payment.py @@ -18,7 +18,7 @@ from trytond import backend from trytond.config import config from trytond.i18n import gettext from trytond.model import ( - ModelSQL, ModelView, Unique, Workflow, dualmethod, fields) + Index, ModelSQL, ModelView, Unique, Workflow, dualmethod, fields) from trytond.model.exceptions import AccessError from trytond.modules.account_payment.exceptions import ProcessError from trytond.modules.company import CompanyReport @@ -465,7 +465,8 @@ class Payment(metaclass=PoolMeta): class Mandate(Workflow, ModelSQL, ModelView): 'SEPA Mandate' __name__ = 'account.payment.sepa.mandate' - party = fields.Many2One('party.party', 'Party', required=True, select=True, + party = fields.Many2One( + 'party.party', "Party", required=True, states={ 'readonly': Eval('state').in_( ['requested', 'validated', 'cancelled']), @@ -494,7 +495,7 @@ class Mandate(Workflow, ModelSQL, ModelView): identification_readonly = fields.Function(fields.Boolean( 'Identification Readonly'), 'get_identification_readonly') company = fields.Many2One( - 'company.company', "Company", required=True, select=True, + 'company.company', "Company", required=True, states={ 'readonly': Eval('state') != 'draft', }) @@ -569,6 +570,10 @@ class Mandate(Workflow, ModelSQL, ModelView): ('identification_unique', Unique(t, t.company, t.identification), 'account_payment_sepa.msg_mandate_unique_id'), ] + cls._sql_indexes.add( + Index( + t, (t.state, Index.Equality()), + where=t.state.in_(['draft', 'requested']))) @classmethod def __register__(cls, module_name): @@ -801,22 +806,26 @@ class Message(Workflow, ModelSQL, ModelView): ('out', 'OUT'), ], 'Type', required=True, states=_states) company = fields.Many2One( - 'company.company', "Company", required=True, select=True, + 'company.company', "Company", required=True, states={ 'readonly': Eval('state') != 'draft', }) - origin = fields.Reference('Origin', selection='get_origin', select=True, - states=_states) + origin = fields.Reference("Origin", selection='get_origin', states=_states) state = fields.Selection([ ('draft', 'Draft'), ('waiting', 'Waiting'), ('done', 'Done'), ('cancelled', 'Cancelled'), - ], "State", readonly=True, select=True, sort=False) + ], "State", readonly=True, sort=False) @classmethod def __setup__(cls): super(Message, cls).__setup__() + t = cls.__table__() + cls._sql_indexes.add( + Index( + t, (t.state, Index.Equality()), + where=t.state.in_(['draft', 'waiting']))) cls._transitions |= { ('draft', 'waiting'), ('waiting', 'done'),