aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2018-09-10 23:20:40 +0200
committerAlban Gruin2018-09-10 23:20:40 +0200
commit75e004c9755bca39b09ea84cf8c49d57574fe177 (patch)
tree9a4f3d401f39756897fb3c18d4983a003737e903
parentb4fde18263de491650c71bd31dffe3c324e97879 (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>
-rw-r--r--forms.py23
1 files 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