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):
33 valeur,validite=self.node.item.eval_valeur(valeurentree)
35 commentaire = "impossible d'évaluer : %s " %`valeurentree`
36 return valeur,validite,commentaire
38 testtype,commentaire = self.node.item.object.verif_type(valeur)
40 return valeur,0,commentaire
42 valide=self.node.item.valide_item(valeur)
43 if type(valide) == types.TupleType:
44 validite,commentaire=valide
50 commentaire = "impossible d'évaluer : %s " %`valeurentree`
51 return valeur, validite, commentaire
53 # ----------------------------------------------------------------------------------------
54 # Méthodes utilisées pour la manipulation des items en notation scientifique
56 # ----------------------------------------------------------------------------------------
57 def SetValeurTexte(self,texteValeur) :
59 if "R" in self.node.item.object.definition.type:
60 if texteValeur[0] != "'":
61 clef=eval(texteValeur)
62 if str(clef) != str(texteValeur) :
63 self.node.item.object.init_modif()
64 clefobj=self.node.item.object.GetNomConcept()
65 if not self.parent.dict_reels.has_key(clefobj):
66 self.parent.dict_reels[clefobj] = {}
67 self.parent.dict_reels[clefobj][clef]=texteValeur
68 self.parent.dict_reels[clefobj]
69 self.node.item.object.fin_modif()
73 def GetValeurTexte(self,valeur) :
75 if "R" in self.node.item.object.definition.type:
76 clefobj=self.node.item.object.GetNomConcept()
77 if self.parent.dict_reels.has_key(clefobj):
78 if self.parent.dict_reels[clefobj].has_key(valeur):
79 valeurTexte=self.parent.dict_reels[clefobj][valeur]
82 #------------------------------------
83 class PolitiqueUnique(Validation) :
84 #------------------------------------
86 classe servant pour les entrees ne demandant qu un mot clef
88 def __init__(self,node,parent):
89 Validation.__init__(self,node,parent)
91 def RecordValeur(self,valeurentree):
92 if self.parent.modified == 'n' : self.parent.init_modif()
93 ancienne_val = self.node.item.get_valeur()
94 valeur,validite,commentaire =self.TesteUneValeur(valeurentree)
96 validite=self.node.item.set_valeur(valeur)
97 if self.node.item.isvalid():
98 commentaire = "Valeur du mot-clé enregistrée"
99 self.SetValeurTexte(str(valeurentree))
101 cr = self.node.item.get_cr()
102 commentaire = "Valeur du mot-clé non autorisée "+cr.get_mess_fatal()
103 self.node.item.set_valeur(ancienne_val)
104 return validite, commentaire
107 #------------------------
108 class PolitiquePlusieurs:
109 #------------------------
111 classe servant pour les entrees ne demandant qu un mot clef
113 def __init__(self,node,parent) :
118 def AjoutValeurs(self,listevaleur,index,listecourante):
120 commentaire="Nouvelle valeur acceptée"
123 if not( type(listevaleur) in (types.ListType,types.TupleType)) :
124 listevaleur=tuple(listevaleur)
125 for valeur in listevaleur :
126 # On teste le type de la valeur
127 valide=self.node.item.valide_item(valeur)
129 #print self.__class__
132 valeur,valide=self.node.item.eval_valeur(valeur)
133 valide,commentaire = self.node.item.object.verif_type(valeur)
135 #return testtype,commentaire,"",listeRetour
138 commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé"
139 commentaire2=self.node.item.info_erreur_item()
140 return valide,commentaire,commentaire2,listeRetour
142 # On valide la liste obtenue
143 encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
144 if not encorevalide :
145 commentaire2=self.node.item.info_erreur_liste()
146 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
147 min,max = self.node.item.GetMinMax()
148 if len(listecourante) + 1 >= max :
149 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
150 return valide,commentaire,commentaire2,listeRetour
151 if len(listecourante) + 1 > min :
152 return valide,commentaire,commentaire2,listeRetour
153 # On ajoute la valeur testee a la liste courante et a la liste acceptee
154 listecourante.insert(index,valeur)
156 listeRetour.append(valeur)
158 return valide,commentaire,commentaire2,listeRetour
160 def AjoutTuple(self,valeurTuple,index,listecourante):
162 commentaire="Nouvelle valeur acceptée"
165 if valeurTuple==None: return
166 if valeurTuple==['']: return
167 # On teste le type de la valeur
168 valide=self.node.item.valide_item(valeurTuple)
171 valeur,valide=self.node.item.eval_valeur(valeurTuple)
172 valide = self.node.item.valide_item(valeur)
176 commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout à la liste refusé"
177 commentaire2=self.node.item.info_erreur_item()
178 return valide,commentaire,commentaire2,listeRetour
180 # On valide la liste obtenue
181 encorevalide=self.node.item.valide_liste_partielle(valeurTuple,listecourante)
182 if not encorevalide :
183 commentaire2=self.node.item.info_erreur_liste()
184 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
185 min,max = self.node.item.GetMinMax()
186 if len(listecourante) + 1 >= max :
187 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
188 return valide,commentaire,commentaire2,listeRetour
189 listeRetour.append(valeurTuple)
190 return valide,commentaire,commentaire2,listeRetour