Projet

Général

Profil

Development #16194

Clarifier/vérifier le fonctionnement en fuseau != UTC

Ajouté par Frédéric Péters il y a presque 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
05 mai 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Note de Thomas dans #16031 :

Fugace impression que les tests passent parce que «TIME_ZONE = 'UTC'» dans chrono/settings.py, mais en fait non, et je doute un peu : on renvoie la date en UTC ?

Sans doute utile d'écrire les tests de telle sorte qu'ils fonctionnent avec une autre TIME_ZONE.


Fichiers

Révisions associées

Révision 7a0d7e55 (diff)
Ajouté par Frédéric Péters il y a presque 7 ans

api: make datetimes return datetimes in localtime (#16194)

Révision 206a97ff (diff)
Ajouté par Frédéric Péters il y a presque 7 ans

tests: run in a different time zone (#16194)

Historique

#1

Mis à jour par Frédéric Péters il y a presque 7 ans

Voilà, correction aux API /datetimes pour utiliser localtime(), et second patch pour faire tourner les tests avec une timezone exotique.

#2

Mis à jour par Frédéric Péters il y a presque 7 ans

  • Statut changé de Nouveau à En cours
#3

Mis à jour par Thomas Noël il y a presque 7 ans

Marche pas du tout, parce qu'il manque dans chrono/api/views.py :

-from django.utils.timezone import now, make_aware
+from django.utils.timezone import now, make_aware, localtime

Et lors des tests :

>       assert resp.json['datetime'] == localtime(event.start_datetime).isoformat()
E       AssertionError: assert '2017-05-06T11:30:00Z' == '2017-05-06T17:00:00+05:30'
E         - 2017-05-06T11:30:00Z
E         ?             ^ ^    ^
E         + 2017-05-06T17:00:00+05:30
E         ?             ^ ^    ^^^^^^
>       assert resp_booking.json['datetime'][:16] == localtime(Booking.objects.all()[0].event.start_datetime
                ).isoformat()[:16]
E       AssertionError: assert '2017-05-07T05:30' == '2017-05-07T11:00'
E         - 2017-05-07T05:30
E         ?             ---
E         + 2017-05-07T11:00
E         ?            +++

Aussi, j'ai du mal à piger les «localtime(now())» : pour moi c'est la même chose que «now()» (now() est "time-zone-aware" parce que settings.USE_TZ=True) ?

#4

Mis à jour par Frédéric Péters il y a presque 7 ans

Ça vient après d'autres patchs, ou j'ai merdé des rebase, je vérifierai.

#6

Mis à jour par Thomas Noël il y a presque 7 ans

Ack

#7

Mis à jour par Frédéric Péters il y a presque 7 ans

  • Statut changé de En cours à Résolu (à déployer)

J'ai aussi ajouté un test pour vérifier qu'une date entrée depuis le /manage/ était correctement retournée dans l'API.

commit 206a97ffe4cadce7cede62a4136bc19edc6f7531
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri May 5 17:35:38 2017 +0200

    tests: run in a different time zone (#16194)

commit 7a0d7e5557c79939e5343c1b245e99cbd508bce1
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri May 5 17:11:07 2017 +0200

    api: make datetimes return datetimes in localtime (#16194)
#8

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF