Salome HOME
CCAR: modification de la procedure d'installation : install.py et de
[tools/eficas.git] / Validation / V_MCCOMPO.py
1 """
2    Ce module contient la classe  de base MCCOMPO qui sert à factoriser
3    les traitements des objets composites de type OBJECT
4 """
5 # Modules Python
6 import string,types
7 import traceback
8
9 # Modules EFICAS
10 from Noyau import N_CR
11 from Noyau.N_Exception import AsException
12
13 class MCCOMPO:
14    """
15        L'attribut mc_liste a été créé par une classe dérivée de la 
16        classe MCCOMPO du Noyau
17    """
18
19    CR=N_CR.CR
20
21    def __init__(self):
22       self.state='undetermined'
23
24    def init_modif_up(self):
25       """
26          Propage l'état modifié au parent s'il existe et n'est pas l'objet
27          lui-meme
28       """
29       if self.parent and self.parent != self :
30         self.parent.state = 'modified'
31
32    def report(self):
33       """ 
34           Génère le rapport de validation de self 
35       """
36       self.cr=self.CR()
37       self.cr.debut = self.txt_nat+self.nom
38       self.cr.fin = "Fin "+self.txt_nat+self.nom
39       self.state = 'modified'
40       try:
41         self.isvalid(cr='oui')
42       except AsException,e:
43         if CONTEXT.debug : traceback.print_exc()
44         self.cr.fatal(string.join((self.txt_nat,self.nom,str(e))))
45       for child in self.mc_liste:
46         self.cr.add(child.report())
47       return self.cr
48
49    def verif_regles(self):
50       """ 
51          A partir du dictionnaire des mots-clés présents, vérifie si les règles 
52          de self sont valides ou non.
53
54          Retourne une string et un booléen :
55
56            - texte = la string contient le message d'erreur de la (les) règle(s) violée(s) ('' si aucune)
57
58            - testglob = booléen 1 si toutes les règles OK, 0 sinon 
59       """
60       dictionnaire=self.dict_mc_presents(restreint='oui')
61       texte=''
62       testglob = 1
63       for r in self.definition.regles:
64         erreurs,test=r.verif(dictionnaire)
65         testglob = testglob*test
66         if erreurs != '':
67           if len(texte) > 1 :
68             texte=texte+'\n'+erreurs
69           else :
70             texte = texte + erreurs
71       return texte,testglob
72
73    def dict_mc_presents(self,restreint='non'):
74       """ 
75           Retourne le dictionnaire {mocle : objet} construit à partir de self.mc_liste
76           Si restreint == 'non' : on ajoute tous les mots-clés simples du catalogue qui ont
77           une valeur par défaut
78           Si restreint == 'oui' : on ne prend que les mots-clés effectivement entrés par
79           l'utilisateur (cas de la vérification des règles)
80       """
81       dico={}
82       # on ajoute les couples {nom mot-clé:objet mot-clé} effectivement présents
83       for v in self.mc_liste:
84         if v == None : continue
85         k=v.nom
86         dico[k]=v
87       if restreint == 'oui' : return dico
88       # Si restreint != 'oui',
89       # on ajoute les couples {nom mot-clé:objet mot-clé} des mots-clés simples
90       # possibles pour peu qu'ils aient une valeur par défaut
91       for k,v in self.definition.entites.items():
92         if v.label != 'SIMP' : continue
93         if not v.defaut : continue
94         if not dico.has_key(k):
95           dico[k]=v(nom=k,val=None,parent=self)
96       return dico
97
98
99