1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
21 import os,traceback,string
23 from Noyau.N_CR import CR
24 from Noyau.N_Exception import AsException
28 Cette classe sert à définir les objets de type Commande commentarisée
30 nature = "COMMANDE_COMMENTARISEE"
33 def __init__(self,texte='',parent=None,reg='oui'):
36 self.jdc = self.parent = CONTEXT.get_current_step()
38 self.jdc = self.parent = parent
39 if hasattr(self.parent,'etape'):
40 self.etape = self.parent.etape
45 self.niveau = self.parent.niveau
47 self.state="unchanged"
48 #self.appel = N_utils.callee_where(niveau=2)
49 if reg=='oui' : self.register()
56 Génère l'objet rapport (classe CR)
59 if not self.isvalid(): self.cr.warn("Objet commande commentarisé invalide")
64 Retourne une copie de self cad un objet COMMANDE_COMM
66 # XXX self.texte ne semble pas exister ???
67 return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
70 self.state = 'modified'
71 self.parent.init_modif()
73 def set_valeur(self,new_valeur):
75 Remplace la valeur de self(si elle existe) par new_valeur)
77 self.valeur = new_valeur
80 def get_valeur(self) :
82 Retourne la valeur de self, cad le texte de la commande commentarisée
88 Enregistre la commande commenatrisée dans la liste des étapes de son parent lorsque celui-ci
91 self.parent.register(self)
95 Indique si self est obligatoire ou non : retourne toujours 0
101 Retourne le nom interne associé à self
102 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
106 def isrepetable(self):
108 Indique si self est répétable ou non : retourne toujours 1
112 def get_attribut(self,nom_attribut) :
114 Retourne l'attribut de nom nom_attribut de self (ou hérité)
116 if hasattr(self,nom_attribut) :
117 return getattr(self,nom_attribut)
123 Retourne l'attribut fr de self.definition
126 return getattr(self.definition,'fr')
130 def liste_mc_presents(self):
135 Méthode qui supprime toutes les boucles de références afin que l'objet puisse
136 être correctement détruit par le garbage collector
142 self.definition = None
147 def supprime_sdprods(self):
150 def update_context(self,d):
152 Update le dictionnaire d avec les concepts ou objets produits par self
153 --> ne fait rien pour une commande en commentaire
157 def delete_concept(self,sd):
160 def replace_concept (self,old_sd,sd):
163 def get_sdprods(self,nom_sd):
168 Cette méthode a pour but de décommentariser l'objet courant,
169 cad de retourner un tuple contenant :
170 - l'objet CMD associé
171 - le nom de la sdprod éventuellement produite (sinon None)
173 # on récupère le contexte avant la commande commentarisée
174 context_ini = self.jdc.get_contexte_avant(self)
176 # on essaie de créer un objet JDC...
177 CONTEXT.unset_current_step()
178 J=self.jdc.__class__(procedure=self.valeur,
179 definition=self.jdc.definition,
181 cata_ord_dico=self.jdc.cata_ordonne_dico,
182 context_ini = context_ini,
186 traceback.print_exc()
187 #self.jdc.set_context()
188 raise AsException("Erreur",str(e))
189 if len(J.cr.crfatal)>0 :
190 # des erreurs fatales ont été rencontrées
191 #self.jdc.set_context()
192 print 'erreurs fatales !!!'
193 raise AsException("Erreurs fatales",string.join(J.cr.crfatal))
194 #self.jdc.set_context()
195 new_etape = J.etapes[0]
197 nom_sd = new_etape.sd.nom
200 return (new_etape.copy(),nom_sd)
204 Rend l'etape courante active
210 Rend l'etape courante inactive
216 Booléenne qui retourne 1 si self est valide, 0 sinon
220 def verif_condition_bloc(self):
222 Evalue les conditions de tous les blocs fils possibles
223 (en fonction du catalogue donc de la définition) de self et
224 retourne deux listes :
225 - la première contient les noms des blocs à rajouter
226 - la seconde contient les noms des blocs à supprimer
230 def verif_condition_regles(self,liste_presents):
232 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
233 en fonction de la liste des mots-clés présents
237 def reparent(self,parent):
239 Cette methode sert a reinitialiser la parente de l'objet
242 self.jdc=parent.get_jdc_root()
245 def verif_existence_sd(self):
247 Vérifie que les structures de données utilisées dans self existent bien dans le contexte
248 avant étape, sinon enlève la référence à ces concepts
249 --> sans objet pour les commandes commentarisées
253 def control_sdprods(self,d):
254 """sans objet pour les commandes commentarisées"""