From: eficas <> Date: Wed, 15 Oct 2003 17:24:55 +0000 (+0000) Subject: ajout de la methode verif_item aux validateurs X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=211df20cf9d58c1c57ad94245fc51abde7ebd568;p=tools%2Feficas.git ajout de la methode verif_item aux validateurs --- diff --git a/Editeur/composimp.py b/Editeur/composimp.py index 4b45351b..71d104fc 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -1507,11 +1507,13 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): """ valide=1 if self.definition.validators : - if not self.definition.validators.is_list(): - try : - valide=self.definition.validators.verif(item) - except : - valide=0 + valide=self.definition.validators.verif_item(item) + + # if not self.definition.validators.is_list(): + # try : + # valide=self.definition.validators.verif(item) + # except : + # valide=0 return valide def valide_liste_partielle(self,item,listecourante): diff --git a/Ihm/I_VALIDATOR.py b/Ihm/I_VALIDATOR.py index a39bff29..c516112c 100644 --- a/Ihm/I_VALIDATOR.py +++ b/Ihm/I_VALIDATOR.py @@ -66,6 +66,17 @@ class Valid: def valide_liste_partielle(self,liste_courante): return 0 + def verif_item(self,valeur): + """ + La methode verif du validateur effectue une validation complete de la valeur. + valeur peut etre un scalaire ou une liste. Le validateur doit traiter les 2 + aspects s'il accepte des listes (dans ce cas la methode is_list doit retourner 1). + La methode valid_item sert pour effectuer des validations partielles de liste + Elle doit uniquement verifier la validite d'un item de liste mais pas les caracteristiques + de la liste + """ + return 0 + def get_into(self,liste_courante=None,into_courant=None): """ Cette méthode retourne la liste de choix proposée par le validateur. Si le validateur ne propose @@ -139,6 +150,13 @@ class Valid: class FunctionVal(Valid):pass class OrVal(Valid): + def verif_item(self,valeur): + for validator in self.validators: + v=validator.verif_item(valeur) + if v : + return 1 + return 0 + def is_list(self): """ Si plusieurs validateurs sont reliés par un OU @@ -183,6 +201,18 @@ class OrVal(Valid): return validator_into class AndVal(Valid): + def info(self): + return "\n et ".join([v.info() for v in self.validators]) + + def verif_item(self,valeur): + for validator in self.validators: + v=validator.verif_item(valeur) + if not v : + # L'info n'est probablement pas la meme que pour verif ??? + self.local_info=validator.info() + return 0 + return 1 + def is_list(self): """ Si plusieurs validateurs sont reliés par un ET @@ -228,12 +258,18 @@ class AndVal(Valid): return into_courant class CardVal(Valid): + def info(self): + return "longueur de liste comprise entre %s et %s" % (self.min,self.max) + def is_list(self): if self.max == '**' or self.max > 1: return 1 else: return 0 + def verif_item(self,valeur): + return 1 + def valide_liste_partielle(self,liste_courante=None): validite=1 print liste_courante @@ -274,6 +310,10 @@ class ListVal(Valid): return liste_choix class EnumVal(ListVal): + def verif_item(self,valeur): + if valeur not in self.into:return 0 + return 1 + def has_into(self): return 1 @@ -290,9 +330,26 @@ class EnumVal(ListVal): class LongStr(ListVal): def info_erreur_item(self): return "Longueur de la chaine incorrecte" + + def verif_item(self,valeur): + if len(valeur) < self.low :return 0 + if len(valeur) > self.high:return 0 + return 1 -class RangeVal(ListVal):pass -class TypeVal(ListVal):pass +class RangeVal(ListVal): + def verif_item(self,valeur): + if valeur < self.low :return 0 + if valeur > self.high:return 0 + return 1 + +class TypeVal(ListVal): + def verif_item(self,valeur): + try: + self.coerce(valeur) + except: + return 0 + return 1 + class PairVal(ListVal): def info_erreur_item(self): @@ -323,9 +380,18 @@ class PairVal(ListVal): print "Ihm.I_MCSIMP.PairVal.verif: ",valeur return self.surcharge_verif(Noyau.N_VALIDATOR.PairVal.verif,valeur) -class InstanceVal(ListVal):pass +class InstanceVal(ListVal): + def verif_item(self,valeur): + if not isinstance(valeur,self.aClass): return 0 + return 1 class NoRepeat(ListVal): + def info(self): + return "pas de presence de doublon dans la liste" + + def verif_item(self,valeur): + return 1 + def get_into(self,liste_courante=None,into_courant=None): """ Methode get_into spécifique pour validateur NoRepeat @@ -343,6 +409,9 @@ class NoRepeat(ListVal): return liste_choix class OrdList(ListVal): + def verif_item(self,valeur): + return 1 + def get_into(self,liste_courante=None,into_courant=None): """ Methode get_into spécifique pour validateur OrdList