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
39 def interprete_valeur(self,val):
41 Essaie d'interpréter val (chaîne de caractères)comme :
44 - une chaîne de caractères
45 - une liste d'items d'un type qui précède
46 Retourne la valeur interprétée
48 if not val : return None
50 # on vérifie si val est un entier
52 valeur = string.atoi(val) # on a un entier
56 # on vérifie si val est un réel
58 valeur = string.atof(val) # on a un réel
62 # on vérifie si val est un tuple
68 if type(valeur) == types.TupleType:
76 # la liste est hétérogène --> on refuse d'interpréter
77 # self comme une liste
78 # on retourne la string initiale
79 print 'liste hétérogène ',val
82 return tuple(l_new_val)
84 # on a réussi à évaluer val en autre chose qu'un tuple ...
85 print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
86 print 'on trouve : ',str(valeur),' de type : ',type(valeur)
87 # on retourne val comme une string car on n'a pas su l'interpréter
90 def set_valeur(self,new_valeur):
92 Remplace la valeur de self par new_valeur interprétée
94 self.valeur = self.interprete_valeur(new_valeur)
99 Méthode qui déclare l'objet courant comme modifié et propage
100 cet état modifié à ses ascendants
102 self.state = 'modified'
104 self.parent.init_modif()
108 Enregistre le paramètre dans la liste des étapes de son parent (JDC)
110 self.parent.register_parametre(self)
111 self.parent.register(self)
113 def isvalid(self,cr='non'):
115 Retourne 1 si self est valide, 0 sinon
116 Un paramètre est considéré comme valide si :
122 self.cr.fatal("Pas de nom donné au paramètre ")
125 if self.valeur == None :
127 self.cr.fatal("Le paramètre %s ne peut valoir None" % self.nom)
133 Indique si self est obligatoire ou non : retourne toujours 0
137 def isrepetable(self):
139 Indique si self est répétable ou non : retourne toujours 1
143 def liste_mc_presents(self):
148 Méthode qui supprime toutes les boucles de références afin que
149 l'objet puisse être correctement détruit par le garbage collector
157 Rend l'etape courante active.
158 Il faut ajouter le paramètre au contexte global du JDC
162 self.jdc.append_param(self)
168 Rend l'etape courante inactive
169 Il faut supprimer le paramètre du contexte global du JDC
172 self.jdc.del_param(self)
173 self.jdc.delete_concept_after_etape(self,self)
177 Booléenne qui retourne 1 si self est actif, 0 sinon
181 def set_attribut(self,nom_attr,new_valeur):
183 Remplace la valeur de self.nom_attr par new_valeur)
185 if hasattr(self,nom_attr):
186 setattr(self,nom_attr,new_valeur)
189 def supprime_sdprods(self):
191 Il faut supprimer le paramètre qui a été entré dans la liste des
194 self.jdc.delete_param(self)
196 def update_context(self,d):
198 Update le dictionnaire d avec le paramètre que produit self
204 Donne un echo de self sous la forme nom = valeur
206 return self.nom+' = '+str(self.valeur)+'\n'
210 Retourne le nom du paramètre comme représentation de self
214 def get_sdprods(self,nom_sd):
216 Retourne les concepts produits par la commande
221 """ Génère l'objet rapport (classe CR) """
223 self.isvalid(cr='oui')
228 Retourne le nom interne associé à self
229 Ce nom n'est jamais vu par l'utilisateur dans EFICAS
233 def delete_concept(self,sd):
236 def verif_condition_bloc(self):
238 Evalue les conditions de tous les blocs fils possibles
239 (en fonction du catalogue donc de la définition) de self et
240 retourne deux listes :
241 - la première contient les noms des blocs à rajouter
242 - la seconde contient les noms des blocs à supprimer
246 def verif_condition_regles(self,liste_presents):
248 Retourne la liste des mots-clés à rajouter pour satisfaire les règles
249 en fonction de la liste des mots-clés présents
253 def verif_existence_sd(self):