2 # person_in_charge: mathieu.courtois at edf.fr
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
24 Ce module contient la classe mixin JDC qui porte les méthodes
25 nécessaires pour réaliser la validation d'un objet de type JDC
28 Une classe mixin porte principalement des traitements et est
29 utilisée par héritage multiple pour composer les traitements.
33 from Noyau.N_Exception import AsException
34 from Noyau.N_utils import AsType
35 from Noyau.strfunc import ufmt
38 class JDC(V_MCCOMPO.MCCOMPO):
45 Methode pour generation d un rapport de validite
48 self.cr.debut = "DEBUT CR validation : " + self.nom
49 self.cr.fin = "FIN CR validation :" + self.nom
52 self.cr.add(e.report())
53 self.state = 'modified'
54 self.isvalid(cr='oui')
57 def isvalid(self, cr='non'):
59 Méthode booléenne qui retourne 0 si le JDC est invalide, 1 sinon
61 # FR : on prend en compte l'état du JDC ('unchanged','modified','undetermined')
62 # afin d'accélérer le test de validité du JDC
63 if self.state == 'unchanged':
67 texte, test = self.verif_regles()
70 self.cr.fatal(' '.strip(texte))
79 self.state = "unchanged"
83 def verif_regles(self):
85 Effectue la vérification de validité des règles du jeu de commandes
87 noms_etapes = [etape.nom for etape in self.etapes]
90 for regle in self.regles:
91 texte, test = regle.verif(noms_etapes)
92 texte_global = texte_global + texte
93 test_global = test_global * test
94 return texte_global, test_global