Projet

Général

Profil

Bug #506

listes à choix multiple affichent une erreur si un autre champ est en prefill

Ajouté par Thomas Noël il y a presque 13 ans. Mis à jour il y a plus de 12 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
-
Version cible:
-
Début:
27 juin 2011
Echéance:
% réalisé:

90%

Temps estimé:
Patch proposed:
Planning:

Description

Lors du premier affichage d'un formulaire, si un des champ possède une valeur de pré-remplissage, alors les champs de type "liste à choix multiples" affichent tous un message d'erreur "choix obligatoire", comme si le formulaire avait déjà été soumis.

exemple : http://vincennes.dev.au-quotidien.com/formulaires-de-tests/test-upload/ (note : il faut se logguer pour que le prefill marche et voir le bogue)

Révisions associées

Révision 53bc4aee (diff)
Ajouté par Thomas Noël il y a plus de 12 ans

CheckboxesWidget: validate in _parse(), not in parse()

fix #506

Historique

#1

Mis à jour par Thomas Noël il y a presque 13 ans

  • Description mis à jour (diff)
#2

Mis à jour par Thomas Noël il y a presque 13 ans

Proposition : décaler la vérification dans Checkboxes._parse (au lieu de parse). C'est-à-dire faire comme pour Checkbox. Mais je ne comprends pas bien pourquoi ça marche ;)

--- wcs/qommon/form.py    (revision 2156)
+++ wcs/qommon/form.py    (working copy)
@@ -743,18 +743,11 @@
             if value is True:
                 values.append(self.element_names[name])
         self.value = values
+        if self.required and not self.value:
+            self.set_error(self.REQUIRED_ERROR)
+        if self.value and self.max_choices and len(self.value) > self.max_choices:
+            self.set_error(_('You must select at most %d answers.') % self.max_choices)

-    def parse(self, request=None):
-        CompositeWidget.parse(self, request=request)
-        if request is None:
-            request = get_request()
-        if request.form or request.get_method() == 'POST':
-            if self.required and not self.value:
-                self.set_error(self.REQUIRED_ERROR)
-            if self.value and self.max_choices and len(self.value) > self.max_choices:
-                self.set_error(_('You must select at most %d answers.') % self.max_choices)
-        return self.value
-
     def set_value(self, value):
         self.value = value
         for name in self.element_names:
#3

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Statut changé de Nouveau à Solution déployée
  • % réalisé changé de 0 à 90

Appliqué par commit r2174.

#4

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Statut changé de Solution déployée à Fermé

Formats disponibles : Atom PDF