X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FpolitiquesValidation.py;h=1cd9c713c6fbf19f60c5fc19b8e2091a5cb7cd79;hb=4bd8d1e0738d27448fc887a4d99ef85eb469da33;hp=20ded381b7b4351f269634d533f5efa66d5b25e5;hpb=cdd358f4041f957701ac10d86766a85baaef4f78;p=tools%2Feficas.git diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 20ded381..1cd9c713 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -1,29 +1,35 @@ # -*- coding: utf-8 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# Copyright (C) 2007-2013 EDF R&D # -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# ====================================================================== # Modules Python +from __future__ import absolute_import +try : + from builtins import range +except : pass + import types +from Accas import PARAMETRE +from Extensions.i18n import tr #------------------ -class Validation : +class Validation(object) : #------------------ def __init__(self,node,parent) : self.node=node @@ -33,26 +39,27 @@ class Validation : commentaire = None valeur,validite=self.node.item.eval_valeur(valeurentree) if not validite : - commentaire = "impossible d'évaluer : %s " %`valeurentree` + commentaire = "impossible d'evaluer : %s " %repr(valeurentree) return valeur,validite,commentaire + if self.node.item.wait_TXM() and not( type(valeur) == str) : valeur=str(valeur) testtype,commentaire = self.node.item.object.verif_type(valeur) if not testtype : return valeur,0,commentaire valide=self.node.item.valide_item(valeur) - if type(valide) == types.TupleType: + if type(valide) == tuple: validite,commentaire=valide else : validite=valide commentaire=" " if not validite and commentaire is None: - commentaire = "impossible d'évaluer : %s " %`valeurentree` + commentaire = "impossible d'evaluer : %s " %repr(valeurentree) return valeur, validite, commentaire # ---------------------------------------------------------------------------------------- -# Méthodes utilisées pour la manipulation des items en notation scientifique +# Methodes utilisees pour la manipulation des items en notation scientifique # a mettre au point # ---------------------------------------------------------------------------------------- def SetValeurTexte(self,texteValeur) : @@ -63,12 +70,12 @@ class Validation : if str(clef) != str(texteValeur) : self.node.item.object.init_modif() clefobj=self.node.item.object.GetNomConcept() - if not self.parent.appliEficas.dict_reels.has_key(clefobj): + if not clefobj in self.parent.appliEficas.dict_reels: self.parent.appliEficas.dict_reels[clefobj] = {} self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur self.parent.appliEficas.dict_reels[clefobj] if clefobj=="" : - if not self.parent.appliEficas.dict_reels.has_key(self.node.item.object.etape) : + if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur self.node.item.object.fin_modif() @@ -77,26 +84,49 @@ class Validation : def GetValeurTexte(self,valeur) : valeurTexte=valeur + if valeur == None : return valeur + from decimal import Decimal + if isinstance(valeur,Decimal) : + if self.node.wait_TXM() and not self.is_param(valeur) : return "'"+str(valeur)+"'" + else : return(valeur) if "R" in self.node.item.object.definition.type: clefobj=self.node.item.object.GetNomConcept() - if self.parent.appliEficas.dict_reels.has_key(clefobj): - if self.parent.appliEficas.dict_reels[clefobj].has_key(valeur): + if clefobj in self.parent.appliEficas.dict_reels: + if valeur in self.parent.appliEficas.dict_reels[clefobj] : valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur] + else : + if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'): + # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin + if (self.is_param(valeur)): + return valeur + else: + try : + val2=eval(str(valeur)+'.') + except : + pass return valeurTexte + def is_param(self,valeur) : + for param in self.node.item.jdc.params: + if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))): + return 1 + return 0 + def AjoutDsDictReel(self,texteValeur): - # le try except est nécessaire pour saisir les paramétres + # le try except est necessaire pour saisir les parametres + # on enleve l erreur de saisie 00 pour 0 + if str(texteValeur)== '00' : return try : if "R" in self.node.item.object.definition.type: if str(texteValeur)[0] != "'": clef=eval(texteValeur) if str(clef) != str(texteValeur) : clefobj=self.node.item.object.GetNomConcept() - if not self.parent.appliEficas.dict_reels.has_key(clefobj): + if not clefobj in self.parent.appliEficas : self.parent.appliEficas.dict_reels[clefobj] = {} self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur if clefobj=="" : - if not self.parent.appliEficas.dict_reels.has_key(self.node.item.object.etape) : + if not self.node.item.object.etape in self.parent.appliEficas.dict_reels : self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur @@ -105,7 +135,7 @@ class Validation : def AjoutDsDictReelEtape(self): try: - if self.parent.appliEficas.dict_reels.has_key(self.node.item.object) : + if self.node.item.object in self.parent.appliEficas.dict_reels: self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object] del self.parent.appliEficas.dict_reels[self.node.item.object] except : @@ -125,14 +155,19 @@ class PolitiqueUnique(Validation) : if self.parent.modified == 'n' : self.parent.init_modif() ancienne_val = self.node.item.get_valeur() valeur,validite,commentaire =self.TesteUneValeur(valeurentree) + if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) : + s=valeurentree + if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.' + valeur,validite,commentaire =self.TesteUneValeur(s) if validite : validite=self.node.item.set_valeur(valeur) if self.node.item.isvalid(): - commentaire = "Valeur du mot-clé enregistrée" + commentaire = tr("Valeur du mot-cle enregistree") + #commentaire = "Valeur du mot-cle enregistree" self.SetValeurTexte(str(valeurentree)) else: cr = self.node.item.get_cr() - commentaire = "Valeur du mot-clé non autorisée "+cr.get_mess_fatal() + commentaire = tr("Valeur du mot-cle non autorisee ")+cr.get_mess_fatal() self.node.item.set_valeur(ancienne_val) return validite, commentaire @@ -144,19 +179,28 @@ class PolitiquePlusieurs(Validation): classe servant pour les entrees ne demandant qu un mot clef """ def __init__(self,node,parent) : + #print "ds PolitiquePlusieurs" self.node=node self.parent=parent + #print self.node + #print self.parent def AjoutValeurs(self,listevaleur,index,listecourante): listeRetour=[] - commentaire="Nouvelle valeur acceptée" + commentaire="Nouvelle valeur acceptee" commentaire2="" valide=1 if listevaleur==None: return if listevaleur=="": return - if not( type(listevaleur) in (types.ListType,types.TupleType)) : + if not( type(listevaleur) in (list,tuple)) : listevaleur=tuple(listevaleur) + # on verifie que la cardinalite max n a pas ete atteinte + min,max = self.node.item.GetMinMax() + if len(listecourante) + len(listevaleur) > max : + commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" + return False,commentaire,commentaire2,listeRetour + for valeur in listevaleur : # On teste le type de la valeur valeurScientifique=valeur @@ -164,13 +208,16 @@ class PolitiquePlusieurs(Validation): if not valide : try : valeur,valide=self.node.item.eval_valeur(valeur) - valide,commentaire = self.node.item.object.verif_type(valeur) + valide,commentaire2 = self.node.item.object.verif_type(valeur) except : #return testtype,commentaire,"",listeRetour pass if not valide: - commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé" - commentaire2=self.node.item.info_erreur_item() + if commentaire.find("On attend un chaine") > 1 : + commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8" + else : + commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse" + if commentaire2== "" :commentaire2=self.node.item.info_erreur_item() return valide,commentaire,commentaire2,listeRetour # On valide la liste obtenue @@ -180,7 +227,7 @@ class PolitiquePlusieurs(Validation): # On traite le cas ou la liste n est pas valide pour un pb de cardinalite min,max = self.node.item.GetMinMax() if len(listecourante) + 1 >= max : - commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" + commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse" return valide,commentaire,commentaire2,listeRetour if len(listecourante) + 1 > min : commentaire="" @@ -193,9 +240,9 @@ class PolitiquePlusieurs(Validation): return valide,commentaire,commentaire2,listeRetour - def AjoutTuple(self,valeurTuple,index,listecourante): + def AjoutTuple(self,valeurTuple,listecourante): listeRetour=[] - commentaire="Nouvelle valeur acceptée" + commentaire="Nouvelle valeur acceptee" commentaire2="" valide=1 if valeurTuple==None: return @@ -209,7 +256,7 @@ class PolitiquePlusieurs(Validation): except : pass if not valide: - commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout à la liste refusé" + commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout a la liste refuse" commentaire2=self.node.item.info_erreur_item() return valide,commentaire,commentaire2,listeRetour @@ -217,10 +264,6 @@ class PolitiquePlusieurs(Validation): encorevalide=self.node.item.valide_liste_partielle(valeurTuple,listecourante) if not encorevalide : commentaire2=self.node.item.info_erreur_liste() - # On traite le cas ou la liste n est pas valide pour un pb de cardinalite - min,max = self.node.item.GetMinMax() - if len(listecourante) + 1 >= max : - commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" - return valide,commentaire,commentaire2,listeRetour + return valide,commentaire,commentaire2,listeRetour listeRetour.append(valeurTuple) return valide,commentaire,commentaire2,listeRetour