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