Bug #49452
ValueError: year 0 is out of range
0%
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/6216/
ValueError: year 0 is out of range (11 additional frame(s) were not displayed) ... File "wcs/backoffice/management.py", line 2446, in stats values = self.formdef.data_class().select(criterias) File "wcs/sql.py", line 432, in f return func(*args, **kwargs) File "wcs/sql.py", line 1325, in select where_clauses, parameters, func_clause = parse_clause(clause) File "wcs/sql.py", line 288, in parse_clause parameters.update(sql_element.as_sql_param()) File "wcs/sql.py", line 100, in as_sql_param value = datetime.datetime.fromtimestamp(time.mktime(self.value))
Fichiers
Révisions associées
Historique
Mis à jour par Lauréline Guérin il y a plus de 3 ans
- Fichier 0001-wip.patch 0001-wip.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Bon, le soucis c'est que ici:
def as_sql_param(self): if isinstance(self.value, time.struct_time): ts = time.mktime(self.value) value = datetime.datetime.fromtimestamp(time.mktime(self.value)) else: value = self.value return {'c%s' % id(self.value): value}
time.mktime(self.value)
donne un timestamp qui est plus petit que datetime.datetime.min (à cause de la timezone) lorsque self.value vaut time.struct_time(tm_year=1, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
(le user a tapé 01/01/0001 dans le widget de sélection de date)
Si on passe directement le datetime renvoyé par misc.get_as_datetime
(datetime(1, 1, 1)), pas d'échec, la requête SQL se comporte comme il faut.
Question: pourquoi on passe un timetuple dans les critères de recherche, et pas le datetime directement ?
Sinon, pour le cas où on passe un timetuple, avec cette modif:
+ #value = datetime.datetime.fromtimestamp(time.mktime(self.value)) + value = datetime.datetime(*self.value[:6])
Ca passe
Mis à jour par Robot Gitea il y a 4 mois
- Assigné à mis à Frédéric Péters
Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/987
- Titre : WIP: sql: pass date/datetime objects in criterias (#49452)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/987/files
Mis à jour par Robot Gitea il y a 4 mois
- Statut changé de Solution proposée à Solution validée
Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a 3 mois
- Statut changé de Solution validée à Résolu (à déployer)
Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/987
- Titre : sql: pass date/datetime objects in criterias (#49452)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/987/files
Mis à jour par Transition automatique il y a 3 mois
- Statut changé de Résolu (à déployer) à Solution déployée
sql: pass date/datetime objects in criterias (#49452)