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
58 def interprete_valeur(self,val):
60 Essaie d'interpréter val (chaîne de caractères)comme :
63 - une chaîne de caractères
64 - une liste d'items d'un type qui précède
65 Retourne la valeur interprétée
67 if not val : return None
69 # on vérifie si val est un entier
71 valeur = string.atoi(val) # on a un entier
75 # on vérifie si val est un réel
77 valeur = string.atof(val) # on a un réel
81 # on vérifie si val est un tuple
87 if type(valeur) == types.TupleType:
95 # la liste est hétérogène --> on refuse d'interpréter
96 # self comme une liste
97 # on retourne la string initiale
98 print 'liste hétérogène ',val
101 return tuple(l_new_val)
103 # on a réussi à évaluer val en autre chose qu'un tuple ...
104 print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
105 print 'on trouve : ',str(valeur),' de type : ',type(valeur)
106 # on retourne val comme une string car on n'a pas su l'interpréter
109 def set_valeur(self,new_valeur):
111 Remplace la valeur de self par new_valeur interprétée
113 self.valeur = self.interprete_valeur(new_valeur)
116 def init_modif(self):
118 Méthode qui déclare l'objet courant comme modifié et propage
119 cet état modifié à ses ascendants
121 self.state = 'modified'
123 self.parent.init_modif()
127 Enregistre le paramètre dans la liste des étapes de son parent (JDC)
129 self.parent.register_parametre(self)
130 self.parent.register(self)
132 def isvalid(self,cr='non'):
134 Retourne 1 si self est valide, 0 sinon
135 Un paramètre est considéré comme valide si :
141 self.cr.fatal("Pas de nom donné au paramètre ")
144 if self.valeur == None :
146 self.cr.fatal("Le paramètre %s ne peut valoir None" % self.nom)
152 Indique si self est obligatoire ou non : retourne toujours 0
156 def isrepetable(self):
158 Indique si self est répétable ou non : retourne toujours 1
162 def liste_mc_presents(self):
167 Méthode qui supprime toutes les boucles de références afin que
168 l'objet puisse être correctement détruit par le garbage collector
176 Rend l'etape courante active.
177 Il faut ajouter le paramètre au contexte global du JDC
181 self.jdc.append_param(self)
187 Rend l'etape courante inactive
188 Il faut supprimer le paramètre du contexte global du JDC
191 self.jdc.del_param(self)
192 self.jdc.delete_concept_after_etape(self,self)
196 Booléenne qui retourne 1 si self est actif, 0 sinon
200 def set_attribut(self,nom_attr,new_valeur):
202 Remplace la valeur de self.nom_attr par new_valeur)
204 if hasattr(self,nom_attr):
205 setattr(self,nom_attr,new_valeur)
208 def supprime_sdprods(self):
210 Il faut supprimer le paramètre qui a été entré dans la liste des
213 self.jdc.delete_param(self)
215 def update_context(self,d):
217 Update le dictionnaire d avec le paramètre que produit self
223 Donne un echo de self sous la forme nom = valeur
225 return self.nom+' = '+str(self.valeur)+'\n'
229 Retourne le nom du paramètre comme représentation de self
233 def get_sdprods(self,nom_sd):
235 Retourne les concepts produits par la commande
240 """ Génère l'objet rapport (classe CR) """
242 self.isvalid(cr='oui')
247 Retourne le nom interne associé à self
248 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
252 def delete_concept(self,sd):
255 def verif_condition_bloc(self):
257 Evalue les conditions de tous les blocs fils possibles
258 (en fonction du catalogue donc de la définition) de self et
259 retourne deux listes :
260 - la première contient les noms des blocs à rajouter
261 - la seconde contient les noms des blocs à supprimer
265 def verif_condition_regles(self,liste_presents):
267 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
268 en fonction de la liste des mots-clés présents
272 def verif_existence_sd(self):