1 #@ MODIF V_MCCOMPO Validation DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE COURTOIS M.COURTOIS
4 # CONFIGURATION MANAGEMENT OF EDF VERSION
5 # ======================================================================
6 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
7 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
8 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
9 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
10 # (AT YOUR OPTION) ANY LATER VERSION.
12 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
13 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
14 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
15 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
17 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
18 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
19 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
22 # ======================================================================
26 Ce module contient la classe de base MCCOMPO qui sert à factoriser
27 les traitements des objets composites de type OBJECT
34 from Noyau import N_CR
35 from Noyau.N_Exception import AsException
39 L'attribut mc_liste a été créé par une classe dérivée de la
40 classe MCCOMPO du Noyau
46 self.state='undetermined'
48 def init_modif_up(self):
50 Propage l'état modifié au parent s'il existe et n'est pas l'objet
53 if self.parent and self.parent != self :
54 self.parent.state = 'modified'
58 Génère le rapport de validation de self
61 self.cr.debut = self.txt_nat+self.nom
62 self.cr.fin = "Fin "+self.txt_nat+self.nom
63 for child in self.mc_liste:
64 self.cr.add(child.report())
65 self.state = 'modified'
67 self.isvalid(cr='oui')
69 if CONTEXT.debug : traceback.print_exc()
70 self.cr.fatal(string.join((self.txt_nat,self.nom,str(e))))
73 def verif_regles(self):
75 A partir du dictionnaire des mots-clés présents, vérifie si les règles
76 de self sont valides ou non.
78 Retourne une string et un booléen :
80 - texte = la string contient le message d'erreur de la (les) règle(s) violée(s) ('' si aucune)
82 - testglob = booléen 1 si toutes les règles OK, 0 sinon
84 #dictionnaire=self.dict_mc_presents(restreint='oui')
85 dictionnaire=self.dict_mc_presents(restreint='non') # On verifie les regles avec les defauts affectés
88 for r in self.definition.regles:
89 erreurs,test=r.verif(dictionnaire)
90 testglob = testglob*test
93 texte=texte+'\n'+erreurs
95 texte = texte + erreurs
98 def dict_mc_presents(self,restreint='non'):
100 Retourne le dictionnaire {mocle : objet} construit à partir de self.mc_liste
101 Si restreint == 'non' : on ajoute tous les mots-clés simples du catalogue qui ont
102 une valeur par défaut
103 Si restreint == 'oui' : on ne prend que les mots-clés effectivement entrés par
104 l'utilisateur (cas de la vérification des règles)
107 # on ajoute les couples {nom mot-clé:objet mot-clé} effectivement présents
108 for v in self.mc_liste:
109 if v == None : continue
112 if restreint == 'oui' : return dico
113 # Si restreint != 'oui',
114 # on ajoute les couples {nom mot-clé:objet mot-clé} des mots-clés simples
115 # possibles pour peu qu'ils aient une valeur par défaut
116 for k,v in self.definition.entites.items():
117 if v.label != 'SIMP' : continue
118 if not v.defaut : continue
119 if not dico.has_key(k):
120 dico[k]=v(nom=k,val=None,parent=self)
121 #on ajoute l'objet detenteur de regles pour des validations plus sophistiquees (a manipuler avec precaution)