1 #@ MODIF commande_comm Accas DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
5 # SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND
6 # REDISTRIBUTION OF THIS FILE.
7 # ======================================================================
8 import os,traceback,string
10 from Noyau.N_CR import CR
11 from Noyau.N_Exception import AsException
15 Cette classe sert à définir les objets de type Commande commentarisée
17 nature = "COMMANDE_COMMENTARISEE"
20 def __init__(self,texte='',parent=None,reg='oui'):
23 self.jdc = self.parent = CONTEXT.get_current_step()
25 self.jdc = self.parent = parent
26 if hasattr(self.parent,'etape'):
27 self.etape = self.parent.etape
32 self.niveau = self.parent.niveau
34 #self.appel = N_utils.callee_where(niveau=2)
35 if reg=='oui' : self.register()
42 Génère l'objet rapport (classe CR)
45 if not self.isvalid(): self.cr.warn("Objet commande commentarisé invalide")
50 Retourne une copie de self cad un objet COMMANDE_COMM
52 # XXX self.texte ne semble pas exister ???
53 return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
56 self.state = 'modified'
57 self.parent.init_modif()
59 def set_valeur(self,new_valeur):
61 Remplace la valeur de self(si elle existe) par new_valeur)
63 self.valeur = new_valeur
66 def get_valeur(self) :
68 Retourne la valeur de self, cad le texte de la commande commentarisée
74 Enregistre la commande commenatrisée dans la liste des étapes de son parent lorsque celui-ci
77 self.parent.register(self)
81 Indique si self est obligatoire ou non : retourne toujours 0
87 Retourne le nom interne associé à self
88 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
92 def isrepetable(self):
94 Indique si self est répétable ou non : retourne toujours 1
98 def get_attribut(self,nom_attribut) :
100 Retourne l'attribut de nom nom_attribut de self (ou hérité)
102 if hasattr(self,nom_attribut) :
103 return getattr(self,nom_attribut)
109 Retourne l'attribut fr de self.definition
112 return getattr(self.definition,'fr')
116 def liste_mc_presents(self):
121 Méthode qui supprime toutes les boucles de références afin que l'objet puisse
122 être correctement détruit par le garbage collector
128 self.definition = None
133 def supprime_sdprods(self):
136 def update_context(self,d):
138 Update le dictionnaire d avec les concepts ou objets produits par self
139 --> ne fait rien pour une commande en commentaire
143 def delete_concept(self,sd):
146 def get_sdprods(self,nom_sd):
151 Cette méthode a pour but de décommentariser l'objet courant,
152 cad de retourner un tuple contenant :
153 - l'objet CMD associé
154 - le nom de la sdprod éventuellement produite (sinon None)
156 # on récupère le contexte avant la commande commentarisée
157 context_ini = self.jdc.get_contexte_avant(self)
159 # on essaie de créer un objet JDC...
160 CONTEXT.unset_current_step()
161 J=self.jdc.__class__(procedure=self.valeur,
162 definition=self.jdc.definition,
164 cata_ord_dico=self.jdc.cata_ordonne_dico,
165 context_ini = context_ini,
169 traceback.print_exc()
170 #self.jdc.set_context()
171 raise AsException("Erreur",str(e))
172 if len(J.cr.crfatal)>0 :
173 # des erreurs fatales ont été rencontrées
174 #self.jdc.set_context()
175 print 'erreurs fatales !!!'
176 raise AsException("Erreurs fatales",string.join(J.cr.crfatal))
177 #self.jdc.set_context()
178 new_etape = J.etapes[0]
180 nom_sd = new_etape.sd.nom
183 return (new_etape.copy(),nom_sd)
187 Rend l'etape courante active
193 Rend l'etape courante inactive
199 Booléenne qui retourne 1 si self est valide, 0 sinon
203 def verif_condition_bloc(self):
205 Evalue les conditions de tous les blocs fils possibles
206 (en fonction du catalogue donc de la définition) de self et
207 retourne deux listes :
208 - la première contient les noms des blocs à rajouter
209 - la seconde contient les noms des blocs à supprimer
213 def verif_condition_regles(self,liste_presents):
215 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
216 en fonction de la liste des mots-clés présents
220 def reparent(self,parent):
222 Cette methode sert a reinitialiser la parente de l'objet
225 self.jdc=parent.get_jdc_root()
228 def verif_existence_sd(self):
230 Vérifie que les structures de données utilisées dans self existent bien dans le contexte
231 avant étape, sinon enlève la référence à ces concepts
232 --> sans objet pour les commandes commentarisées