Development #52227
Le calcul du délai maximal foire quand on est pile à la distance du délai d'un changement d'heure
0%
Description
Voir #52215.
Il est 23h59 le 18mars, le délai est de 10j, ça devrait permettre de réserver un évènement jusqu'au 27 mars minuit (au delà ça dépasse les 10 jours relatifs) mais le calcul qui est fait dans get_open_events() ne prend pas en compte la possibilité d'un changement d'heure :
if self.maximal_booking_delay: max_booking_time = localtime(now() + datetime.timedelta(days=self.maximal_booking_delay)).replace( hour=0, minute=0 ) max_start = min(max_booking_time, max_start) if max_start else max_booking_time
Ici on travaille sur une heure UTC avant de la recaler à minuit du jour précédent, on devrait plutôt se caler sur midi heure locale aujourd'hui puis avancer du délai, puis recaler sur minuit du jour précédent :
max_booking_time = (localtime(now()).replace(hour=12, minute=0) + datetime.timedelta(days=self.maximal_booking_delay)).replace( hour=0, minute=0 )
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Fichier 0002-agenda-factorize-min_booking_time-computation-52227.patch 0002-agenda-factorize-min_booking_time-computation-52227.patch ajouté
- Fichier 0001-agenda-factorize-code-to-compute-max_booking_time-52.patch 0001-agenda-factorize-code-to-compute-max_booking_time-52.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
- Event.in_bookable_period() ne vérifie pas minimal_booking_delay, mais Agenda.get_open_events() le fait donc ça n'a pas eu d'impact, peut-être faudrait-il le faire pour les brouillons qui conserveraient une référence.
Oublions c'est moi qui l'ai viré sans faire exprès, c'est remis.
Mis à jour par Lauréline Guérin il y a environ 3 ans
dans 0001,
if self.start_datetime > self.agenda.max_booking_datetime:
On peut pas avoir self.agenda.max_booking_datetime à None ?
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
Lauréline Guerin a écrit :
dans 0001,
[...]
On peut pas avoir self.agenda.max_booking_datetime à None ?
Dans la vie certainement, dans les tests ça n'arrive jamais on dirait.
Peut-être parce que je n'ai pas viré entièrement l'ancien code, je regarde.
Ça n'arrive jamais à cause de Agenda.save() qui corrige. Peut-être avec un agenda virtuel, je ne sais pas si les délais s'appliquent dans ce cas.
Mis à jour par Lauréline Guérin il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 918d2c233983b156849c48cbce8eaefbf419e155 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Mar 19 10:38:18 2021 +0100 agenda: factorize code to compute min/max_booking_time (#52227)
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
agenda: factorize code to compute min/max_booking_time (#52227)