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 # ======================================================================
30 def __init__(self,node,parent) :
34 def TesteUneValeur(self,valeurentree):
35 valeur,validite=self.node.item.eval_valeur(valeurentree)
37 commentaire = "impossible d'évaluer : %s " %`valeurentree`
38 return valeur,validite,commentaire
40 testtype,commentaire = self.node.item.object.verif_type(valeur)
42 return valeur,0,commentaire
44 valide=self.node.item.valide_item(valeur)
45 if type(valide) == types.TupleType:
46 validite,commentaire=valide
52 commentaire = "impossible d'évaluer : %s " %`valeurentree`
53 return valeur, validite, commentaire
55 # ----------------------------------------------------------------------------------------
56 # Méthodes utilisées pour la manipulation des items en notation scientifique
58 # ----------------------------------------------------------------------------------------
59 def SetValeurTexte(self,texteValeur) :
61 if "R" in self.node.item.object.definition.type:
62 if texteValeur[0] != "'":
63 clef=eval(texteValeur)
64 if str(clef) != str(texteValeur) :
65 self.node.item.object.init_modif()
66 clefobj=self.node.item.object.GetNomConcept()
67 if not self.parent.dict_reels.has_key(clefobj):
68 self.parent.dict_reels[clefobj] = {}
69 self.parent.dict_reels[clefobj][clef]=texteValeur
70 self.parent.dict_reels[clefobj]
71 self.node.item.object.fin_modif()
75 def GetValeurTexte(self,valeur) :
77 if "R" in self.node.item.object.definition.type:
78 clefobj=self.node.item.object.GetNomConcept()
79 if self.parent.dict_reels.has_key(clefobj):
80 if self.parent.dict_reels[clefobj].has_key(valeur):
81 valeurTexte=self.parent.dict_reels[clefobj][valeur]
84 #------------------------------------
85 class PolitiqueUnique(Validation) :
86 #------------------------------------
88 classe servant pour les entrees ne demandant qu un mot clef
90 def __init__(self,node,parent):
91 Validation.__init__(self,node,parent)
93 def RecordValeur(self,valeurentree):
94 if self.parent.modified == 'n' : self.parent.init_modif()
95 ancienne_val = self.node.item.get_valeur()
96 valeur,validite,commentaire =self.TesteUneValeur(valeurentree)
98 validite=self.node.item.set_valeur(valeur)
99 if self.node.item.isvalid():
100 commentaire = "Valeur du mot-clé enregistrée"
101 self.SetValeurTexte(str(valeurentree))
103 cr = self.node.item.get_cr()
104 commentaire = "Valeur du mot-clé non autorisée "+cr.get_mess_fatal()
105 self.node.item.set_valeur(ancienne_val)
106 return validite, commentaire
109 #------------------------
110 class PolitiquePlusieurs:
111 #------------------------
113 classe servant pour les entrees ne demandant qu un mot clef
115 def __init__(self,node,parent) :
120 def AjoutValeurs(self,listevaleur,index,listecourante):
122 commentaire="Nouvelle valeur acceptée"
125 if listevaleur==None: return
126 if listevaleur=="": return
127 if not( type(listevaleur) in (types.ListType,types.TupleType)) :
128 listevaleur=tuple(listevaleur)
129 for valeur in listevaleur :
130 # On teste le type de la valeur
131 valide=self.node.item.valide_item(valeur)
133 #print self.__class__
136 valeur,valide=self.node.item.eval_valeur(valeur)
137 valide,commentaire = self.node.item.object.verif_type(valeur)
139 #return testtype,commentaire,"",listeRetour
142 commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé"
143 commentaire2=self.node.item.info_erreur_item()
144 return valide,commentaire,commentaire2,listeRetour
146 # On valide la liste obtenue
147 encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
148 if not encorevalide :
149 commentaire2=self.node.item.info_erreur_liste()
150 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
151 min,max = self.node.item.GetMinMax()
152 if len(listecourante) + 1 >= max :
153 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
154 return valide,commentaire,commentaire2,listeRetour
155 if len(listecourante) + 1 > min :
156 return valide,commentaire,commentaire2,listeRetour
157 # On ajoute la valeur testee a la liste courante et a la liste acceptee
158 listecourante.insert(index,valeur)
160 listeRetour.append(valeur)
162 return valide,commentaire,commentaire2,listeRetour