Bug #506
listes à choix multiple affichent une erreur si un autre champ est en prefill
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
Historique
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:
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.
CheckboxesWidget: validate in _parse(), not in parse()
fix #506