Salome HOME
debug intempestif
[tools/eficas.git] / Validation / V_JDC.py
1 # coding=utf-8
2 # person_in_charge: mathieu.courtois at edf.fr
3 # ======================================================================
4 # COPYRIGHT (C) 2007-2021  EDF R&D                  
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.
9 #
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.
14 #
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.
18 #
19 #
20 # ======================================================================
21
22
23 """
24    Ce module contient la classe mixin JDC qui porte les methodes
25    necessaires pour realiser la validation d'un objet de type JDC
26    derive de OBJECT.
27
28    Une classe mixin porte principalement des traitements et est
29    utilisee par heritage multiple pour composer les traitements.
30 """
31 from __future__ import absolute_import
32 # Modules EFICAS
33 from . import V_MCCOMPO
34 from Noyau.N_Exception import AsException
35 from Noyau.N_utils import AsType
36
37
38 class JDC(V_MCCOMPO.MCCOMPO):
39
40     """
41     """
42
43     def report(self):
44         """
45             Methode pour generation d un rapport de validite
46         """
47         self.cr.purge()
48         #self.cr.debut = "DEBUT CR validation : " + self.nom
49         #self.cr.fin = "FIN CR validation :" + self.nom
50         self.cr.debut = "BEGIN validation report : " + self.nom
51         self.cr.fin = "END validation report :" + self.nom
52         for e in self.etapes:
53             if e.isActif():
54                 self.cr.add(e.report())
55         self.state = 'modified'
56         self.isValid(cr='oui')
57         return self.cr
58
59     def isValid(self, cr='non'):
60         """
61           Methode booleenne qui retourne 0 si le JDC est invalide, 1 sinon
62         """
63         # FR : on prend en compte l'etat du JDC ('unchanged','modified','undetermined')
64         # afin d'accelerer le test de validite du JDC
65         if self.state == 'unchanged':
66             return self.valid
67         else:
68             valid = 1
69             texte, test = self.verifRegles()
70             if test == 0:
71                 if cr == 'oui':
72                     if texte != "" and (' '.strip(texte) == "") : self.cr.fatal(texte)
73                     else : self.cr.fatal(' '.strip(texte))
74                 valid = 0
75             if valid:
76                 for e in self.etapes:
77                     if not e.isActif():
78                         continue
79                     if not e.isValid():
80                         valid = 0
81                         break
82             self.state = "unchanged"
83             self.valid = valid
84             return self.valid
85
86     def verifRegles(self):
87         """
88         Effectue la verification de validite des regles du jeu de commandes
89         """
90         noms_etapes = [etape.nom for etape in self.etapes]
91         texte_global = ''
92         test_global = 1
93         for regle in self.regles:
94             texte, test = regle.verif(noms_etapes)
95             texte_global = texte_global + texte
96             test_global = test_global * test
97         return texte_global, test_global