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 # ======================================================================
28 def __init__(self,node,parent) :
32 def TesteUneValeur(self,valeurentree):
34 valeur,validite=self.node.item.eval_valeur(valeurentree)
36 commentaire = "impossible d'évaluer : %s " %`valeurentree`
37 return valeur,validite,commentaire
39 testtype,commentaire = self.node.item.object.verif_type(valeur)
41 return valeur,0,commentaire
43 valide=self.node.item.valide_item(valeur)
44 if type(valide) == types.TupleType:
45 validite,commentaire=valide
50 if not validite and commentaire is None:
51 commentaire = "impossible d'évaluer : %s " %`valeurentree`
52 return valeur, validite, commentaire
54 # ----------------------------------------------------------------------------------------
55 # Méthodes utilisées pour la manipulation des items en notation scientifique
57 # ----------------------------------------------------------------------------------------
58 def SetValeurTexte(self,texteValeur) :
60 if "R" in self.node.item.object.definition.type:
61 if texteValeur[0] != "'":
62 clef=eval(texteValeur)
63 if str(clef) != str(texteValeur) :
64 self.node.item.object.init_modif()
65 clefobj=self.node.item.object.GetNomConcept()
66 if not self.parent.appliEficas.dict_reels.has_key(clefobj):
67 self.parent.appliEficas.dict_reels[clefobj] = {}
68 self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur
69 self.parent.appliEficas.dict_reels[clefobj]
71 if not self.parent.appliEficas.dict_reels.has_key(self.node.item.object.etape) :
72 self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {}
73 self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur
74 self.node.item.object.fin_modif()
78 def GetValeurTexte(self,valeur) :
80 if "R" in self.node.item.object.definition.type:
81 clefobj=self.node.item.object.GetNomConcept()
82 if self.parent.appliEficas.dict_reels.has_key(clefobj):
83 if self.parent.appliEficas.dict_reels[clefobj].has_key(valeur):
84 valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur]
87 def AjoutDsDictReel(self,texteValeur):
88 # le try except est nécessaire pour saisir les paramétres
90 if "R" in self.node.item.object.definition.type:
91 if str(texteValeur)[0] != "'":
92 clef=eval(texteValeur)
93 if str(clef) != str(texteValeur) :
94 clefobj=self.node.item.object.GetNomConcept()
95 if not self.parent.appliEficas.dict_reels.has_key(clefobj):
96 self.parent.appliEficas.dict_reels[clefobj] = {}
97 self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur
99 if not self.parent.appliEficas.dict_reels.has_key(self.node.item.object.etape) :
100 self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {}
101 self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur
106 def AjoutDsDictReelEtape(self):
108 if self.parent.appliEficas.dict_reels.has_key(self.node.item.object) :
109 self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object]
110 del self.parent.appliEficas.dict_reels[self.node.item.object]
115 #------------------------------------
116 class PolitiqueUnique(Validation) :
117 #------------------------------------
119 classe servant pour les entrees ne demandant qu un mot clef
121 def __init__(self,node,parent):
122 Validation.__init__(self,node,parent)
124 def RecordValeur(self,valeurentree):
125 if self.parent.modified == 'n' : self.parent.init_modif()
126 ancienne_val = self.node.item.get_valeur()
127 valeur,validite,commentaire =self.TesteUneValeur(valeurentree)
129 validite=self.node.item.set_valeur(valeur)
130 if self.node.item.isvalid():
131 commentaire = "Valeur du mot-clé enregistrée"
132 self.SetValeurTexte(str(valeurentree))
134 cr = self.node.item.get_cr()
135 commentaire = "Valeur du mot-clé non autorisée "+cr.get_mess_fatal()
136 self.node.item.set_valeur(ancienne_val)
137 return validite, commentaire
140 #--------------------------------------
141 class PolitiquePlusieurs(Validation):
142 #--------------------------------------
144 classe servant pour les entrees ne demandant qu un mot clef
146 def __init__(self,node,parent) :
151 def AjoutValeurs(self,listevaleur,index,listecourante):
153 commentaire="Nouvelle valeur acceptée"
156 if listevaleur==None: return
157 if listevaleur=="": return
158 if not( type(listevaleur) in (types.ListType,types.TupleType)) :
159 listevaleur=tuple(listevaleur)
160 for valeur in listevaleur :
161 # On teste le type de la valeur
162 valeurScientifique=valeur
163 valide=self.node.item.valide_item(valeur)
166 valeur,valide=self.node.item.eval_valeur(valeur)
167 valide,commentaire = self.node.item.object.verif_type(valeur)
169 #return testtype,commentaire,"",listeRetour
172 commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé"
173 commentaire2=self.node.item.info_erreur_item()
174 return valide,commentaire,commentaire2,listeRetour
176 # On valide la liste obtenue
177 encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
178 if not encorevalide :
179 commentaire2=self.node.item.info_erreur_liste()
180 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
181 min,max = self.node.item.GetMinMax()
182 if len(listecourante) + 1 >= max :
183 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
184 return valide,commentaire,commentaire2,listeRetour
185 if len(listecourante) + 1 > min :
187 return valide,commentaire,commentaire2,listeRetour
188 # On ajoute la valeur testee a la liste courante et a la liste acceptee
189 self.AjoutDsDictReel(valeurScientifique)
190 listecourante.insert(index,valeur)
192 listeRetour.append(valeur)
194 return valide,commentaire,commentaire2,listeRetour
196 def AjoutTuple(self,valeurTuple,index,listecourante):
198 commentaire="Nouvelle valeur acceptée"
201 if valeurTuple==None: return
202 if valeurTuple==['']: return
203 # On teste le type de la valeur
204 valide=self.node.item.valide_item(valeurTuple)
207 valeur,valide=self.node.item.eval_valeur(valeurTuple)
208 valide = self.node.item.valide_item(valeur)
212 commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout à la liste refusé"
213 commentaire2=self.node.item.info_erreur_item()
214 return valide,commentaire,commentaire2,listeRetour
216 # On valide la liste obtenue
217 encorevalide=self.node.item.valide_liste_partielle(valeurTuple,listecourante)
218 if not encorevalide :
219 commentaire2=self.node.item.info_erreur_liste()
220 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
221 min,max = self.node.item.GetMinMax()
222 if len(listecourante) + 1 >= max :
223 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
224 return valide,commentaire,commentaire2,listeRetour
225 listeRetour.append(valeurTuple)
226 return valide,commentaire,commentaire2,listeRetour