From 75e004c9755bca39b09ea84cf8c49d57574fe177 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Mon, 10 Sep 2018 23:20:40 +0200 Subject: 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 --- forms.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/forms.py b/forms.py index 00dbf9e..d4ee94d 100644 --- a/forms.py +++ b/forms.py @@ -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 -- cgit v1.2.1