1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 Ce module contient la classe PARAMETRE qui sert à définir
22 des objets paramètres qui sont compréhensibles et donc affichables
24 Ces objets sont créés à partir de la modification du fichier de commandes
25 de l'utilisateur par le parseur de fichiers Python
28 # import de modules Python
31 # import de modules Eficas
32 from Noyau.N_CR import CR
36 Cette classe permet de créer des objets de type PARAMETRE
37 cad des affectations directes dans le jeu de commandes (ex: a=10.)
38 qui sont interprétées par le parseur de fichiers Python.
39 Les objets ainsi créés constituent des paramètres pour le jdc
45 def __init__(self,nom,valeur=None):
46 # parent ne peut être qu'un objet de type JDC
47 self.valeur = self.interprete_valeur(valeur)
50 # La classe PARAMETRE n'a pas de définition : on utilise self pour
53 self.jdc = self.parent = CONTEXT.get_current_step()
54 self.niveau=self.parent.niveau
56 self.state='undetermined'
59 def interprete_valeur(self,val):
61 Essaie d'interpréter val (chaîne de caractères)comme :
64 - une chaîne de caractères
65 - une liste d'items d'un type qui précède
66 Retourne la valeur interprétée
68 if not val : return None
70 # on vérifie si val est un entier
72 valeur = string.atoi(val) # on a un entier
76 # on vérifie si val est un réel
78 valeur = string.atof(val) # on a un réel
82 # on vérifie si val est un tuple
88 if type(valeur) == types.TupleType:
96 # la liste est hétérogène --> on refuse d'interpréter
97 # self comme une liste
98 # on retourne la string initiale
99 print 'liste hétérogène ',val
102 return tuple(l_new_val)
104 # on a réussi à évaluer val en autre chose qu'un tuple ...
105 print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
106 print 'on trouve : ',str(valeur),' de type : ',type(valeur)
107 # on retourne val comme une string car on n'a pas su l'interpréter
110 def set_valeur(self,new_valeur):
112 Remplace la valeur de self par new_valeur interprétée
114 self.valeur = self.interprete_valeur(new_valeur)
117 def init_modif(self):
119 Méthode qui déclare l'objet courant comme modifié et propage
120 cet état modifié à ses ascendants
122 self.state = 'modified'
124 self.parent.init_modif()
128 Enregistre le paramètre dans la liste des étapes de son parent (JDC)
130 self.parent.register_parametre(self)
131 self.parent.register(self)
133 def isvalid(self,cr='non'):
135 Retourne 1 si self est valide, 0 sinon
136 Un paramètre est considéré comme valide si :
142 self.cr.fatal("Pas de nom donné au paramètre ")
145 if self.valeur == None :
147 self.cr.fatal("Le paramètre %s ne peut valoir None" % self.nom)
153 Indique si self est obligatoire ou non : retourne toujours 0
157 def isrepetable(self):
159 Indique si self est répétable ou non : retourne toujours 1
163 def liste_mc_presents(self):
168 Méthode qui supprime toutes les boucles de références afin que
169 l'objet puisse être correctement détruit par le garbage collector
177 Rend l'etape courante active.
178 Il faut ajouter le paramètre au contexte global du JDC
182 self.jdc.append_param(self)
188 Rend l'etape courante inactive
189 Il faut supprimer le paramètre du contexte global du JDC
192 self.jdc.del_param(self)
193 self.jdc.delete_concept_after_etape(self,self)
197 Booléenne qui retourne 1 si self est actif, 0 sinon
201 def set_attribut(self,nom_attr,new_valeur):
203 Remplace la valeur de self.nom_attr par new_valeur)
205 if hasattr(self,nom_attr):
206 setattr(self,nom_attr,new_valeur)
209 def supprime_sdprods(self):
211 Il faut supprimer le paramètre qui a été entré dans la liste des
214 self.jdc.delete_param(self)
216 def update_context(self,d):
218 Update le dictionnaire d avec le paramètre que produit self
224 Donne un echo de self sous la forme nom = valeur
226 return self.nom+' = '+str(self.valeur)+'\n'
230 Retourne le nom du paramètre comme représentation de self
234 def get_sdprods(self,nom_sd):
236 Retourne les concepts produits par la commande
241 """ Génère l'objet rapport (classe CR) """
243 self.isvalid(cr='oui')
248 Retourne le nom interne associé à self
249 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
253 def delete_concept(self,sd):
256 def replace_concept(self,old_sd,sd):
259 def verif_condition_bloc(self):
261 Evalue les conditions de tous les blocs fils possibles
262 (en fonction du catalogue donc de la définition) de self et
263 retourne deux listes :
264 - la première contient les noms des blocs à rajouter
265 - la seconde contient les noms des blocs à supprimer
269 def verif_condition_regles(self,liste_presents):
271 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
272 en fonction de la liste des mots-clés présents
276 def verif_existence_sd(self):
279 def control_sdprods(self,d):