2 Ce module contient la classe PARAMETRE qui sert à définir
3 des objets paramètres qui sont compréhensibles et donc affichables
5 Ces objets sont créés à partir de la modification du fichier de commandes
6 de l'utilisateur par le parseur de fichiers Python
9 # import de modules Python
12 # import de modules Eficas
13 from Noyau.N_CR import CR
17 Cette classe permet de créer des objets de type PARAMETRE
18 cad des affectations directes dans le jeu de commandes (ex: a=10.)
19 qui sont interprétées par le parseur de fichiers Python.
20 Les objets ainsi créés constituent des paramètres pour le jdc
26 def __init__(self,nom,valeur=None):
27 # parent ne peut être qu'un objet de type JDC
28 self.valeur = self.interprete_valeur(valeur)
31 # La classe PARAMETRE n'a pas de définition : on utilise self pour
34 self.jdc = self.parent = CONTEXT.get_current_step()
35 self.niveau=self.parent.niveau
38 def interprete_valeur(self,val):
40 Essaie d'interpréter val (chaîne de caractères)comme :
43 - une chaîne de caractères
44 - une liste d'items d'un type qui précède
45 Retourne la valeur interprétée
47 if not val : return None
49 # on vérifie si val est un entier
51 valeur = string.atoi(val) # on a un entier
55 # on vérifie si val est un réel
57 valeur = string.atof(val) # on a un réel
61 # on vérifie si val est un tuple
67 if type(valeur) == types.TupleType:
75 # la liste est hétérogène --> on refuse d'interpréter
76 # self comme une liste
77 # on retourne la string initiale
78 print 'liste hétérogène ',val
81 return tuple(l_new_val)
83 # on a réussi à évaluer val en autre chose qu'un tuple ...
84 print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
85 print 'on trouve : ',str(valeur),' de type : ',type(valeur)
86 # on retourne val comme une string car on n'a pas su l'interpréter
89 def set_valeur(self,new_valeur):
91 Remplace la valeur de self par new_valeur interprétée
93 self.valeur = self.interprete_valeur(new_valeur)
98 Méthode qui déclare l'objet courant comme modifié et propage
99 cet état modifié à ses ascendants
101 self.state = 'modified'
103 self.parent.init_modif()
107 Enregistre le paramètre dans la liste des étapes de son parent (JDC)
109 self.parent.register_parametre(self)
110 self.parent.register(self)
112 def isvalid(self,cr='non'):
114 Retourne 1 si self est valide, 0 sinon
115 Un paramètre est considéré comme valide si :
121 self.cr.fatal("Pas de nom donné au paramètre ")
124 if self.valeur == None :
126 self.cr.fatal("Le paramètre %s ne peut valoir None" % self.nom)
132 Indique si self est obligatoire ou non : retourne toujours 0
136 def isrepetable(self):
138 Indique si self est répétable ou non : retourne toujours 1
142 def liste_mc_presents(self):
147 Méthode qui supprime toutes les boucles de références afin que
148 l'objet puisse être correctement détruit par le garbage collector
156 Rend l'etape courante active.
157 Il faut ajouter le paramètre au contexte global du JDC
161 self.jdc.append_param(self)
167 Rend l'etape courante inactive
168 Il faut supprimer le paramètre du contexte global du JDC
171 self.jdc.del_param(self)
172 self.jdc.delete_concept_after_etape(self,self)
176 Booléenne qui retourne 1 si self est actif, 0 sinon
180 def set_attribut(self,nom_attr,new_valeur):
182 Remplace la valeur de self.nom_attr par new_valeur)
184 if hasattr(self,nom_attr):
185 setattr(self,nom_attr,new_valeur)
188 def supprime_sdprods(self):
190 Il faut supprimer le paramètre qui a été entré dans la liste des
193 self.jdc.delete_param(self)
195 def update_context(self,d):
197 Update le dictionnaire d avec le paramètre que produit self
203 Donne un echo de self sous la forme nom = valeur
205 return self.nom+' = '+str(self.valeur)+'\n'
209 Retourne le nom du paramètre comme représentation de self
213 def get_sdprods(self,nom_sd):
215 Retourne les concepts produits par la commande
220 """ Génère l'objet rapport (classe CR) """
222 self.isvalid(cr='oui')
227 Retourne le nom interne associé à self
228 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
232 def delete_concept(self,sd):
235 def verif_condition_bloc(self):
237 Evalue les conditions de tous les blocs fils possibles
238 (en fonction du catalogue donc de la définition) de self et
239 retourne deux listes :
240 - la première contient les noms des blocs à rajouter
241 - la seconde contient les noms des blocs à supprimer
245 def verif_condition_regles(self,liste_presents):
247 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
248 en fonction de la liste des mots-clés présents