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 # ======================================================================
22 Ce module contient la classe PARAMETRE qui sert à définir
23 des objets paramètres qui sont compréhensibles et donc affichables
25 Ces objets sont créés à partir de la modification du fichier de commandes
26 de l'utilisateur par le parseur de fichiers Python
29 # import de modules Python
32 # import de modules Eficas
33 from Noyau.N_CR import CR
37 Cette classe permet de créer des objets de type PARAMETRE
38 cad des affectations directes dans le jeu de commandes (ex: a=10.)
39 qui sont interprétées par le parseur de fichiers Python.
40 Les objets ainsi créés constituent des paramètres pour le jdc
46 def __init__(self,nom,valeur=None):
47 # parent ne peut être qu'un objet de type JDC
48 self.valeur = self.interprete_valeur(valeur)
51 # La classe PARAMETRE n'a pas de définition : on utilise self pour
54 self.jdc = self.parent = CONTEXT.get_current_step()
55 self.niveau=self.parent.niveau
57 self.state='undetermined'
60 def interprete_valeur(self,val):
62 Essaie d'interpréter val (chaîne de caractères)comme :
65 - une chaîne de caractères
66 - une liste d'items d'un type qui précède
67 Retourne la valeur interprétée
69 if not val : return None
71 # on vérifie si val est un entier
73 valeur = string.atoi(val) # on a un entier
77 # on vérifie si val est un réel
79 valeur = string.atof(val) # on a un réel
83 # on vérifie si val est un tuple
89 if type(valeur) == types.TupleType:
97 # la liste est hétérogène --> on refuse d'interpréter
98 # self comme une liste
99 # on retourne la string initiale
100 print 'liste hétérogène ',val
103 return tuple(l_new_val)
104 # PN : commente le print
106 # on a réussi à évaluer val en autre chose qu'un tuple ...
107 #print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
108 #print 'on trouve : ',str(valeur),' de type : ',type(valeur)
109 # on retourne val comme une string car on n'a pas su l'interpréter
112 def set_valeur(self,new_valeur):
114 Remplace la valeur de self par new_valeur interprétée
116 self.valeur = self.interprete_valeur(new_valeur)
119 def init_modif(self):
121 Méthode qui déclare l'objet courant comme modifié et propage
122 cet état modifié à ses ascendants
124 self.state = 'modified'
126 self.parent.init_modif()
130 Enregistre le paramètre dans la liste des étapes de son parent (JDC)
132 self.parent.register_parametre(self)
133 self.parent.register(self)
135 def isvalid(self,cr='non'):
137 Retourne 1 si self est valide, 0 sinon
138 Un paramètre est considéré comme valide si :
144 self.cr.fatal("Pas de nom donné au paramètre ")
147 if self.valeur == None :
149 self.cr.fatal("Le paramètre %s ne peut valoir None" % self.nom)
155 Indique si self est obligatoire ou non : retourne toujours 0
159 def isrepetable(self):
161 Indique si self est répétable ou non : retourne toujours 1
165 def liste_mc_presents(self):
170 Méthode qui supprime toutes les boucles de références afin que
171 l'objet puisse être correctement détruit par le garbage collector
179 Rend l'etape courante active.
180 Il faut ajouter le paramètre au contexte global du JDC
184 self.jdc.append_param(self)
190 Rend l'etape courante inactive
191 Il faut supprimer le paramètre du contexte global du JDC
194 self.jdc.del_param(self)
195 self.jdc.delete_concept_after_etape(self,self)
199 Booléenne qui retourne 1 si self est actif, 0 sinon
203 def set_attribut(self,nom_attr,new_valeur):
205 Remplace la valeur de self.nom_attr par new_valeur)
207 if hasattr(self,nom_attr):
208 setattr(self,nom_attr,new_valeur)
211 def supprime_sdprods(self):
213 Il faut supprimer le paramètre qui a été entré dans la liste des
216 self.jdc.delete_param(self)
218 def update_context(self,d):
220 Update le dictionnaire d avec le paramètre que produit self
226 Donne un echo de self sous la forme nom = valeur
228 return self.nom+' = '+str(self.valeur)
232 Retourne le nom du paramètre comme représentation de self
236 def get_sdprods(self,nom_sd):
238 Retourne les concepts produits par la commande
243 """ Génère l'objet rapport (classe CR) """
245 self.isvalid(cr='oui')
250 Retourne le nom interne associé à self
251 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
255 def delete_concept(self,sd):
258 def replace_concept(self,old_sd,sd):
261 def verif_condition_bloc(self):
263 Evalue les conditions de tous les blocs fils possibles
264 (en fonction du catalogue donc de la définition) de self et
265 retourne deux listes :
266 - la première contient les noms des blocs à rajouter
267 - la seconde contient les noms des blocs à supprimer
271 def verif_condition_regles(self,liste_presents):
273 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
274 en fonction de la liste des mots-clés présents
278 def verif_existence_sd(self):
281 def control_sdprods(self,d):