X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FpolitiquesValidation.py;h=1cd9c713c6fbf19f60c5fc19b8e2091a5cb7cd79;hb=96176d0080e0d4efbd29d98c0df700a64a82acdc;hp=a976f9717be6a707f34d5723d8da1b989f225c05;hpb=69ed0ccae7884aee37bbe54cb1af2983cb51492d;p=tools%2Feficas.git diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index a976f971..1cd9c713 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -1,57 +1,65 @@ # -*- 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 self.parent=parent def TesteUneValeur(self,valeurentree): + 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 : - commentaire = "impossible d'évaluer : %s " %`valeurentree` + if not validite and commentaire is None: + 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) : @@ -62,23 +70,78 @@ class Validation : if str(clef) != str(texteValeur) : self.node.item.object.init_modif() clefobj=self.node.item.object.GetNomConcept() - if not self.parent.dict_reels.has_key(clefobj): - self.parent.dict_reels[clefobj] = {} - self.parent.dict_reels[clefobj][clef]=texteValeur - self.parent.dict_reels[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.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() except: pass 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.dict_reels.has_key(clefobj): - if self.parent.dict_reels[clefobj].has_key(valeur): - valeurTexte=self.parent.dict_reels[clefobj][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 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 clefobj in self.parent.appliEficas : + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + if clefobj=="" : + 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 + + except: + pass + + def AjoutDsDictReelEtape(self): + try: + 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 : + pass + + #------------------------------------ class PolitiqueUnique(Validation) : #------------------------------------ @@ -92,53 +155,69 @@ 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 -#------------------------ -class PolitiquePlusieurs: -#------------------------ +#-------------------------------------- +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 valide=self.node.item.valide_item(valeur) if not valide : - #print self.__class__ - #if not testtype : 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 @@ -148,13 +227,43 @@ class PolitiquePlusieurs: # 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="" return valide,commentaire,commentaire2,listeRetour # On ajoute la valeur testee a la liste courante et a la liste acceptee + self.AjoutDsDictReel(valeurScientifique) listecourante.insert(index,valeur) index=index+1 listeRetour.append(valeur) return valide,commentaire,commentaire2,listeRetour + + def AjoutTuple(self,valeurTuple,listecourante): + listeRetour=[] + commentaire="Nouvelle valeur acceptee" + commentaire2="" + valide=1 + if valeurTuple==None: return + if valeurTuple==['']: return + # On teste le type de la valeur + valide=self.node.item.valide_item(valeurTuple) + if not valide : + try : + valeur,valide=self.node.item.eval_valeur(valeurTuple) + valide = self.node.item.valide_item(valeur) + except : + pass + if not valide: + commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout a la liste refuse" + commentaire2=self.node.item.info_erreur_item() + return valide,commentaire,commentaire2,listeRetour + + # On valide la liste obtenue + encorevalide=self.node.item.valide_liste_partielle(valeurTuple,listecourante) + if not encorevalide : + commentaire2=self.node.item.info_erreur_liste() + return valide,commentaire,commentaire2,listeRetour + listeRetour.append(valeurTuple) + return valide,commentaire,commentaire2,listeRetour