diff options
author | Alban Gruin | 2018-09-10 23:20:40 +0200 |
---|---|---|
committer | Alban Gruin | 2018-09-10 23:20:40 +0200 |
commit | 75e004c9755bca39b09ea84cf8c49d57574fe177 (patch) | |
tree | 9a4f3d401f39756897fb3c18d4983a003737e903 /forms.py | |
parent | b4fde18263de491650c71bd31dffe3c324e97879 (diff) |
forms: correction de l’ajout du message d’erreur
La fonction de recherche QSJPS demande à ce que l’heure de début soit
strictement supérieure à l’heure de fin. Le formulaire vérifie donc
que ce critère soit respecté lors de la validation, et devrait
afficher une erreur si il ne l’est pas.
Or, le message d’erreur n’était pas rajouté correctement et fait
planter la validation.
De plus, lorsqu’il est 23h, les valeurs par défaut ne respectent pas
cette condition (on rajoute une heure, il est donc minuit passé). La
valeur par défaut du champ de fin est donc "23:59" si il est 23
heures. Il est important de noter que cette valeur ne valide toujours
pas le critère à 23h59, il serait bon de trouver une solution plus
pérenne à l’avenir, même si je doute que beaucoup de personnes ne
cherche une salle libre à ces heures…
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
Diffstat (limited to 'forms.py')
-rw-r--r-- | forms.py | 23 |
1 files changed, 17 insertions, 6 deletions
@@ -37,10 +37,21 @@ class QSJPSForm(forms.Form): # On définit les valeurs par défaut de cette manière pour # éviter les mauvaises surprises. On retire les secondes des # heures de début et de fin. - self.fields["day"].initial = tz_now().strftime("%Y-%m-%d") - self.fields["begin"].initial = tz_now().strftime("%H:%M") - self.fields["end"].initial = (tz_now() + timedelta(hours=1)) \ - .strftime("%H:%M") + now = tz_now() + + self.fields["day"].initial = now.strftime("%Y-%m-%d") + self.fields["begin"].initial = now.strftime("%H:%M") + + # Si il est 23h passé, 23h + 1h revient à minuit passé, et ne + # respecte pas le critère de la recherche (début < fin). La + # valeur par défaut de la fin devient automatiquement 23:59. + if now.hour == 23: + # Cela ne marche toujours pas à 23h59. + # TODO trouver une solution plus pérenne. + self.fields["end"].initial = "23:59" + else: + self.fields["end"].initial = (now + timedelta(hours=1)) \ + .strftime("%H:%M") def clean(self): form_data = self.cleaned_data @@ -53,6 +64,6 @@ class QSJPSForm(forms.Form): form_data["begin"] >= form_data["end"]: # Si l’heure de fin est plus petite ou égale, on affiche # une erreur. - self._errors["end"].append("L’heure de début doit être supérieure " - "à celle de fin.") + self.add_error("end", "L’heure de début doit être" + "supérieure à celle de fin.") return form_data |