Projet

Général

Profil

Bug #87403

JSONEncoder encode les nouvelles datetime avec timezone

Ajouté par Benjamin Dauvergne il y a 2 mois. Mis à jour il y a environ 2 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
23 février 2024
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Et ça casse le contrat avec certains connecteur, ici SMART à Toulouse #87374, on a reçu dans un champ configuré à {{ form_receipt_datetime }} la chaîne suivante '2024-02-23T11:40:58.500931+01:00'.


Demandes liées

Lié à Passerelle - Bug #87374: ValueError: Not naive datetime (tzinfo is already set)Rejeté23 février 2024

Actions
Lié à Passerelle - Development #87415: toulouse smart : accepter les datetime avec timezoneSolution déployée23 février 2024

Actions

Historique

#1

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Tracker changé de Development à Bug
#2

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Lié à Bug #87374: ValueError: Not naive datetime (tzinfo is already set) ajouté
#3

Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Sujet changé de JSONEncore encode les nouvelles datetime avec timezone à JSONEncoder encode les nouvelles datetime avec timezone

À tester mais je pense qu'un tel patch suffirait:

diff --git a/wcs/qommon/misc.py b/wcs/qommon/misc.py
index b3f5ec412..e11c5493a 100644
--- a/wcs/qommon/misc.py
+++ b/wcs/qommon/misc.py
@@ -628,6 +628,8 @@ class JSONEncoder(json.JSONEncoder):
         o = o.get_value() if hasattr(o, 'get_value') else o

         if isinstance(o, datetime.datetime):
+            if is_aware(o):
+                return make_naive(o).isoformat()
             return o.isoformat()

         if isinstance(o, datetime.date):

#5

Mis à jour par Frédéric Péters il y a 2 mois

Je préférerais permettre l'évolution des API wcs pour être plus précise sur les timestamps, il y avait wcs-olap que j'ai adapté, il y a le connecteur smart, il doit manquer quelque chose en recette qui fait qu'on ne l'a pas détecté mais je peux y faire un patch.

Tu écris "certains connecteurs", tu as noté un problème pour quels autres ?

#6

Mis à jour par Nicolas Roche il y a 2 mois

À tester

Je n'y arrive pas, je n'ai plus l'accès à smart depuis mon post.

#7

Mis à jour par Frédéric Péters il y a 2 mois

  • Lié à Development #87415: toulouse smart : accepter les datetime avec timezone ajouté
#8

Mis à jour par Benjamin Dauvergne il y a 2 mois

Frédéric Péters a écrit :

Tu écris "certains connecteurs", tu as noté un problème pour quels autres ?

Justement je ne sais pas, je vois d'autres make_aware dans passerelle il faudrait en faire le tour et des strptime en pagaille, je ne saurai dire lesquels concernent des données datetime envoyées par w.c.s. et si w.c.s. va systématiquement envoyé un datetime avec la timezone locale (dans ce cas on peut espérer que strptime continuera à fonctionner en ignorant la timezone, comme si c'était une date naïve dans la bonne timezone). Je trouve que c'est risqué pour rien.

#9

Mis à jour par Frédéric Péters il y a 2 mois

  • Statut changé de Nouveau à Fermé
  • Priorité changé de Haut à Normal

Justement je ne sais pas, je vois d'autres make_aware dans passerelle il faudrait en faire le tour

De sentry je vois uniquement #87433 qui a également produit "Not naive datetime (tzinfo is already set)", j'y ai posé un patch.

Je vais continuer à suivre passerelle et laisser wcs en l'état.

Formats disponibles : Atom PDF