+ #print "affect_panel : ",self.panel
+
+ def is_list(self):
+ """
+ Cette méthode indique si le mot cle simple attend une liste (valeur de retour 1)
+ ou s'il n'en attend pas (valeur de retour 0)
+
+ Deux cas principaux peuvent se presenter : avec validateurs ou bien sans.
+ Dans le cas sans validateur, l'information est donnée par l'attribut max
+ de la definition du mot cle.
+ Dans le cas avec validateur, il faut combiner l'information précédente avec
+ celle issue de l'appel de la méthode is_list sur le validateur.On utilisera
+ l'operateur ET pour effectuer cette combinaison (AndVal).
+ """
+ is_a_list=0
+ min,max = self.GetMinMax()
+ assert (min <= max)
+ if max > 1 :
+ is_a_list=1
+ # Dans le cas avec validateurs, pour que le mot cle soit considéré
+ # comme acceptant une liste, il faut que max soit supérieur a 1
+ # ET que la méthode is_list du validateur retourne 1. Dans les autres cas
+ # on retournera 0 (n'attend pas de liste)
+ if self.definition.validators :
+ is_a_list= self.definition.validators.is_list() * is_a_list
+ return is_a_list
+
+ def get_into(self,liste_courante=None):
+ """
+ Cette méthode retourne la liste de choix proposée par le mot cle. Si le mot cle ne propose
+ pas de liste de choix, la méthode retourne None.
+ L'argument d'entrée liste_courante, s'il est différent de None, donne la liste des choix déjà
+ effectués par l'utilisateur. Dans ce cas, la méthode get_into doit calculer la liste des choix
+ en en tenant compte.
+ Cette méthode part du principe que la relation entre into du mot clé et les validateurs est
+ une relation de type ET (AndVal).
+ """
+ if not self.object.definition.validators :
+ return self.object.definition.into
+ else:
+ return self.object.definition.validators.get_into(liste_courante,self.definition.into)
+
+ def has_into(self):
+ """
+ Cette méthode indique si le mot cle simple propose un choix (valeur de retour 1)
+ ou s'il n'en propose pas (valeur de retour 0)
+
+ Deux cas principaux peuvent se presenter : avec validateurs ou bien sans.
+ Dans le cas sans validateur, l'information est donnée par l'attribut into
+ de la definition du mot cle.
+ Dans le cas avec validateurs, pour que le mot cle soit considéré
+ comme proposant un choix, il faut que into soit présent OU
+ que la méthode has_into du validateur retourne 1. Dans les autres cas
+ on retournera 0 (ne propose pas de choix)
+ """
+ has_an_into=0
+ if self.definition.into:
+ has_an_into=1
+ elif self.definition.validators :
+ has_an_into= self.definition.validators.has_into()
+ return has_an_into
+
+ def valide_item(self,item):
+ """
+ On fait un try except pour les erreurs de types (exple
+ on rentre 1 pour une chaine de caracteres
+ """
+ valide=1
+ if self.definition.validators :
+ try :
+ valide=self.definition.validators.verif_item(item)
+ except :
+ valide = 0
+ return valide
+
+ def valide_liste_partielle(self,item,listecourante):
+ valeuravant=self.object.valeur
+ valeur=listecourante
+ valeur.append(item)
+ valeur = tuple(valeur)
+ retour=self.object.set_valeur(valeur)
+ validite=0
+ if self.object.isvalid():
+ validite=1
+ elif self.definition.validators :
+ validite=self.definition.validators.valide_liste_partielle(valeur)
+
+ if validite==0:
+ min,max=self.GetMinMax()
+ if len(valeur) < min :
+ validite=1
+ retour=self.object.set_valeur(valeuravant)
+ return validite
+
+ def valide_liste_complete (self,valeur):
+ valeuravant=self.object.valeur
+ retour=self.object.set_valeur(valeur)
+ validite=0
+ if self.object.isvalid():
+ validite=1
+ retour=self.object.set_valeur(valeuravant)
+ return validite
+
+ def info_erreur_item(self) :
+ commentaire=""
+ if self.definition.validators :
+ commentaire=self.definition.validators.info_erreur_item()
+ return commentaire