]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT/politiquesValidation.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / InterfaceQT / 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 from qt import *
25
26
27 #------------------
28 class Validation  :
29 #------------------
30   def __init__(self,node,parent) :
31          self.node=node
32          self.parent=parent
33
34   def TesteUneValeur(self,valeurentree):
35          valeur,validite=self.node.item.eval_valeur(valeurentree)
36          if not validite :
37                   commentaire = "impossible d'évaluer : %s " %`valeurentree`
38                   return valeur,validite,commentaire
39
40          testtype,commentaire = self.node.item.object.verif_type(valeur)
41          if not testtype :
42                   return valeur,0,commentaire
43
44          valide=self.node.item.valide_item(valeur)
45          if type(valide) == types.TupleType:
46                  validite,commentaire=valide
47          else :
48                  validite=valide
49                  commentaire=" "
50
51          if not validite :
52                   commentaire = "impossible d'évaluer : %s " %`valeurentree`
53          return valeur, validite, commentaire
54
55 # ----------------------------------------------------------------------------------------
56 #   Méthodes utilisées pour la manipulation des items en notation scientifique
57 #   a mettre au point
58 # ----------------------------------------------------------------------------------------
59   def SetValeurTexte(self,texteValeur) :
60          try :
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()
72          except:
73             pass
74
75   def GetValeurTexte(self,valeur) :
76          valeurTexte=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]
82          return valeurTexte
83
84 #------------------------------------
85 class PolitiqueUnique(Validation) :
86 #------------------------------------
87   """
88   classe servant pour les entrees ne demandant qu un mot clef
89   """
90   def __init__(self,node,parent):
91         Validation.__init__(self,node,parent)
92
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)
97          if validite :
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))
102             else:
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 
107
108  
109 #------------------------
110 class PolitiquePlusieurs:
111 #------------------------
112   """
113   classe servant pour les entrees ne demandant qu un mot clef
114   """
115   def __init__(self,node,parent) :
116          self.node=node
117          self.parent=parent
118
119
120   def AjoutValeurs(self,listevaleur,index,listecourante):
121          listeRetour=[]
122          commentaire="Nouvelle valeur acceptée"
123          commentaire2=""
124          valide=1
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)
132              if not valide :
133                 #print self.__class__
134                 #if not testtype :
135                 try :
136                    valeur,valide=self.node.item.eval_valeur(valeur)
137                    valide,commentaire = self.node.item.object.verif_type(valeur)
138                 except :
139                    #return testtype,commentaire,"",listeRetour
140                    pass
141              if not valide:
142                 commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé"
143                 commentaire2=self.node.item.info_erreur_item()
144                 return valide,commentaire,commentaire2,listeRetour
145
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)
159              index=index+1
160              listeRetour.append(valeur)
161
162          return valide,commentaire,commentaire2,listeRetour