Salome HOME
CCAR: modification de la procedure d'installation : install.py et de
[tools/eficas.git] / Validation / V_JDC.py
1 """
2    Ce module contient la classe mixin JDC qui porte les méthodes
3    nécessaires pour réaliser la validation d'un objet de type JDC
4    dérivé de OBJECT.
5
6    Une classe mixin porte principalement des traitements et est
7    utilisée par héritage multiple pour composer les traitements.
8 """
9 # Modules Python
10 import string,types
11
12 # Modules EFICAS
13 import V_MCCOMPO
14 from Noyau.N_Exception import AsException
15 from Noyau.N_utils import AsType
16
17 class JDC(V_MCCOMPO.MCCOMPO):
18    """
19    """
20
21    def report(self):
22       """ 
23           Methode pour generation d un rapport de validite
24       """
25       self.cr.purge()
26       self.cr.debut="DEBUT CR validation : "+self.nom
27       self.cr.fin="FIN CR validation :"+self.nom
28       self.state = 'modified'
29       self.isvalid(cr='oui')
30       for e in self.etapes :
31         if e.isactif():
32           self.cr.add(e.report())
33       return self.cr
34
35    def isvalid(self,cr='non'):
36       """
37         Méthode booléenne qui retourne 0 si le JDC est invalide, 1 sinon
38       """
39       # FR : on prend en compte l'état du JDC ('unchanged','modified','undetermined')
40       # afin d'accélérer le test de validité du JDC 
41       if self.state == 'unchanged':
42         return self.valid
43       else:
44         valid = 1
45         texte,test = self.verif_regles()
46         if test == 0:
47           if cr == 'oui': self.cr.fatal(string.strip(texte))
48           valid = 0
49         if valid :
50           for e in self.etapes:
51             if not e.isactif() : continue
52             if not e.isvalid():
53               valid = 0
54               break
55         self.valid = valid
56         return self.valid
57
58    def verif_regles(self):
59       """ 
60          Effectue la vérification de validité des règles du jeu de commandes 
61       """
62       l_noms_etapes=self.get_l_noms_etapes()
63       texte_global = ''
64       test_global = 1
65       for regle in self.regles :
66         texte,test = regle.verif(l_noms_etapes)
67         texte_global = texte_global + texte
68         test_global = test_global*test
69       return texte_global,test_global
70
71    def get_l_noms_etapes(self):
72       """ 
73           Retourne la liste des noms des étapes de self 
74       """
75       l=[]
76       for etape in self.etapes:
77         l.append(etape.nom)
78       return l
79