Projet

Général

Profil

Bug #9852

crash export json sur les dates avant 1900

Ajouté par Thomas Noël il y a environ 8 ans. Mis à jour il y a environ 8 ans.

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

0%

Temps estimé:
Patch proposed:
Non
Planning:

Description


Exception:
  type = '<type 'exceptions.ValueError'>', value = 'year out of range'

Stack trace (most recent call first):
  File "/usr/lib/python2.7/dist-packages/wcs/qommon/misc.py", line 401, in default
   399     def default(self, obj):
   400         if isinstance(obj, time.struct_time):
>  401             return datetime.datetime.utcfromtimestamp(time.mktime(obj)).isoformat() + 'Z'
   402         # Let the base class default method raise the TypeError
   403         return json.JSONEncoder.default(self, obj)

  locals:
     self = <qommon.misc.JSONEncoder object at 0x4778c10>
     obj = time.struct_time(tm_year=1899, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=365, tm_isdst=-1)

(en l'occurrence il s'agit d'erreur de saisie, mais bon [erreur de saisie du au widget datepicker qui supporte mal la saisie au clavier dans le champ]).


Demandes liées

Lié à w.c.s. - Bug #9933: mauvaise entrée sur date picker → 31/12/1899Fermé10 février 2016

Actions

Historique

#1

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

struct_time est dans la timezone locale et mktime reconvertie en timestamp UTC, le code suivant devrait éviter de passer par un timestamp:

import datetime
import dateutil.tz

def struct_time_to_isoformat(st):
    dt = datetime.datetime(*st[:6]).replace(tzinfo=dateutil.tz.tzlocal())
    dt = dt.astimezone(dateutil.tz.tzutc)
    return dt.replace(tzinfo=None).isoformat() + 'Z'

Il faudrait tester en énumérant pas mal de timestamp sur n années, convertir en struct_time et voir si ça matche toujours avec l'ancien code.

#2

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible mis à v1.32
#3

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible v1.32 supprimé
#4

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Lié à Bug #7132: format des dates, conflit API json et workflow_data/form. ajouté
#5

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Lié à Bug #7132: format des dates, conflit API json et workflow_data/form. supprimé
#6

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Lié à Bug #9933: mauvaise entrée sur date picker → 31/12/1899 ajouté
#7

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible mis à v1.33
#8

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible changé de v1.33 à v1.34
#9

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible changé de v1.34 à v1.35
#10

Mis à jour par Thomas Noël il y a environ 8 ans

  • Version cible changé de v1.35 à v1.37
#11

Mis à jour par Thomas Noël il y a environ 8 ans

  • Statut changé de Nouveau à Fermé

Formats disponibles : Atom PDF