Projet

Général

Profil

Bug #63088

assignation d'une LazyList à un champ fichier (ProgrammingError: can't adapt type 'LazyList')

Ajouté par Sentry Io il y a environ 2 ans. Mis à jour il y a 7 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
23 mars 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

https://sentry.entrouvert.org/entrouvert/gplexpert/issues/54848/

ProgrammingError: can't adapt type 'LazyList'
(18 additional frame(s) were not displayed)
...
  File "wcs/workflows.py", line 94, in perform_items
    url = item.perform(formdata) or url
  File "wcs/wf/edit_carddata.py", line 55, in perform
    target_data.store()
  File "wcs/sql.py", line 590, in f
    return func(*args, **kwargs)
  File "wcs/qommon/substitution.py", line 27, in f
    return func(*args, **kwargs)
  File "wcs/sql.py", line 2301, in store
    cur.execute(sql_statement, sql_dict)

Révisions associées

Révision fae4eb97 (diff)
Ajouté par Frédéric Péters il y a 7 mois

tests: add checks for assigning invalid values in "edit card" action (#63088)

Historique

#1

Mis à jour par Paul Marillonnet il y a environ 2 ans

  • Projet changé de Suivi des traces à w.c.s.
#2

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

  • Sujet changé de ProgrammingError: can't adapt type 'LazyList' à assignation d'une LazyList à un champ fichier (ProgrammingError: can't adapt type 'LazyList')

Un champ fichier dans une fiche, une action "modifier la fiche", l'attribution au champ fichier de {{forms|objects:"test-clem"|getlist:"courrier"}.

Mais la trace dans sentry n'est pas claire, elle n'affiche pas sql_statement en entier mais le dictionnaire qui contient les valeurs passées à l'INSERT ne contient pas de lazylist ou autre,

sql_dict    {anonymised: None, backoffice_submission: True, id_display: '82-3', page_no: '1', prefilling_data: None, status: 'wf-recorded', submission_context: None, tracking_code: None, user_id: None, workflow_data: None}

(...)

J'ai copie de la trace par mail et dedans c'est mieux :

sql_dict = {
  […],
  'f1': None,
  'f2': <wcs.variables.LazyList object at 0x7fada65b9430>,
  'f2_display': 'Fichier joint',
  'id': 2}

À noter que cette trace est accompagnée d'une erreur enregistrée https://demarches-departement06.test.entrouvert.org/backoffice/cards/82/logged-errors/18895/ qui expose clairement Impossible d’assigner une valeur au champ « fichier joint »;

  • Gabarit : {{forms|objects:"test-clem"|getlist:"courrier"}}
  • Message d’erreur : AttributeError: 'LazyList' object has no attribute 'get'

Il faut regarder un peu l'action, c'est possible qu'on pose une donnée (invalide) dans le dictionnaire et qu'ensuite le set_value() échoue, mais ça continue jusqu'au store() où ça saute.

Sur le set_value() qui échoue, il y aurait alors à assurer qu'on remplace mauvaise valeur par None.

#3

Mis à jour par Robot Gitea il y a 7 mois

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Frédéric Péters

Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :

#4

Mis à jour par Robot Gitea il y a 7 mois

  • Statut changé de En cours à Solution proposée
#5

Mis à jour par Robot Gitea il y a 7 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 :

#6

Mis à jour par Robot Gitea il y a 7 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 :

#7

Mis à jour par Transition automatique il y a 7 mois

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

Mis à jour par Transition automatique il y a 5 mois

Automatic expiration

Formats disponibles : Atom PDF