Bug #87403
JSONEncoder encode les nouvelles datetime avec timezone
0%
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
Historique
Mis à jour par Benjamin Dauvergne il y a 2 mois
- Lié à Bug #87374: ValueError: Not naive datetime (tzinfo is already set) ajouté
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):
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 ?
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.
Mis à jour par Frédéric Péters il y a 2 mois
- Lié à Development #87415: toulouse smart : accepter les datetime avec timezone ajouté
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.
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.