Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / InterfaceQT4 / politiquesValidation.py
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.
9 #
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.
14 #
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.
18 #
19 #
20 # ======================================================================
21 # Modules Python
22 import types
23
24
25 #------------------
26 class Validation  :
27 #------------------
28   def __init__(self,node,parent) :
29          self.node=node
30          self.parent=parent
31
32   def TesteUneValeur(self,valeurentree):
33          valeur,validite=self.node.item.eval_valeur(valeurentree)
34          if not validite :
35                   commentaire = "impossible d'évaluer : %s " %`valeurentree`
36                   return valeur,validite,commentaire
37
38          testtype,commentaire = self.node.item.object.verif_type(valeur)
39          if not testtype :
40                   return valeur,0,commentaire
41
42          valide=self.node.item.valide_item(valeur)
43          if type(valide) == types.TupleType:
44                  validite,commentaire=valide
45          else :
46                  validite=valide
47                  commentaire=" "
48
49          if not validite :
50                   commentaire = "impossible d'évaluer : %s " %`valeurentree`
51          return valeur, validite, commentaire
52
53 # ----------------------------------------------------------------------------------------
54 #   Méthodes utilisées pour la manipulation des items en notation scientifique
55 #   a mettre au point
56 # ----------------------------------------------------------------------------------------
57   def SetValeurTexte(self,texteValeur) :
58          try :
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()
70          except:
71             pass
72
73   def GetValeurTexte(self,valeur) :
74          valeurTexte=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]
80          return valeurTexte
81
82 #------------------------------------
83 class PolitiqueUnique(Validation) :
84 #------------------------------------
85   """
86   classe servant pour les entrees ne demandant qu un mot clef
87   """
88   def __init__(self,node,parent):
89         Validation.__init__(self,node,parent)
90
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)
95          if validite :
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))
100             else:
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 
105
106  
107 #------------------------
108 class PolitiquePlusieurs:
109 #------------------------
110   """
111   classe servant pour les entrees ne demandant qu un mot clef
112   """
113   def __init__(self,node,parent) :
114          self.node=node
115          self.parent=parent
116
117
118   def AjoutValeurs(self,listevaleur,index,listecourante):
119          listeRetour=[]
120          commentaire="Nouvelle valeur acceptée"
121          commentaire2=""
122          valide=1
123          if listevaleur==None: return
124          if listevaleur=="": return
125          if not( type(listevaleur)  in (types.ListType,types.TupleType)) :
126             listevaleur=tuple(listevaleur)
127          for valeur in listevaleur :
128              # On teste le type de la valeur
129              valide=self.node.item.valide_item(valeur)
130              if not valide :
131                 #print self.__class__
132                 #if not testtype :
133                 try :
134                    valeur,valide=self.node.item.eval_valeur(valeur)
135                    valide,commentaire = self.node.item.object.verif_type(valeur)
136                 except :
137                    #return testtype,commentaire,"",listeRetour
138                    pass
139              if not valide:
140                 commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé"
141                 commentaire2=self.node.item.info_erreur_item()
142                 return valide,commentaire,commentaire2,listeRetour
143
144              # On valide la liste obtenue
145              encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
146              if not encorevalide :
147                 commentaire2=self.node.item.info_erreur_liste()
148                 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
149                 min,max = self.node.item.GetMinMax()
150                 if len(listecourante) + 1 >= max :
151                    commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
152                    return valide,commentaire,commentaire2,listeRetour
153                 if len(listecourante) + 1 > min :
154                    return valide,commentaire,commentaire2,listeRetour
155              # On ajoute la valeur testee a la liste courante et a la liste acceptee
156              listecourante.insert(index,valeur)
157              index=index+1
158              listeRetour.append(valeur)
159
160          return valide,commentaire,commentaire2,listeRetour