Projet

Général

Profil

Development #52227

Le calcul du délai maximal foire quand on est pile à la distance du délai d'un changement d'heure

Ajouté par Benjamin Dauvergne il y a environ 3 ans. Mis à jour il y a environ 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
19 mars 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision 918d2c23 (diff)
Ajouté par Benjamin Dauvergne il y a environ 3 ans

agenda: factorize code to compute min/max_booking_time (#52227)

Historique

#2

Mis à jour par Benjamin Dauvergne il y a environ 3 ans

  • Assigné à mis à Benjamin Dauvergne
#3

Mis à jour par Benjamin Dauvergne il y a environ 3 ans

  • 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.

#4

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 ?

#5

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.

#6

Mis à jour par Benjamin Dauvergne il y a environ 3 ans

C'est bon c'est bleu.

#7

Mis à jour par Lauréline Guérin il y a environ 3 ans

  • Statut changé de Solution proposée à Solution validée
#8

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)
#9

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

Formats disponibles : Atom PDF