Projet

Général

Profil

Bug #33302

Données manquantes lors d'une reprise de bouillon sur champ liste lié à une data source (où la donnée n'existe plus)

Ajouté par Emmanuel Cazenave il y a presque 5 ans. Mis à jour il y a 4 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
21 mai 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

De #33029.

Un champ liste date (https://demarches-montoulouse.eservices.toulouse-metropole.fr/backoffice/forms/8/fields/13/) relié à une data source qui renvoie id, text , token.

Lors d'une reprise de brouillon, on peut se retrouver une fois dans le workflow avec

form_var_date None (<type 'NoneType'>)
form_var_date_raw dd/mm/yyyy

form_var_date_token absent.

(ensuite erreur dans le workflow, parce qu'on a besoin de form_var_date_token)

Pas réussi a tracer ça mais il y a fort à parier que lors de la reprise de brouillon, la data source ne revoie plus la date qui avait été sélectionnée initialement (on est sur de la prise de rendez-vous).


Fichiers

form-datasource-brouillon.wcs (1,69 ko) form-datasource-brouillon.wcs Emmanuel Cazenave, 21 mai 2019 12:22
erreur-technique.png (11,7 ko) erreur-technique.png Frédéric Péters, 04 janvier 2024 09:50

Demandes liées

Dupliqué par w.c.s. - Bug #37143: Perte des valeurs d'affichage (display_value) et structurées des ItemField à la soumissionFermé22 octobre 2019

Actions

Historique

#2

Mis à jour par Frédéric Péters il y a presque 5 ans

Lors d'une reprise de brouillon

Qui arrive avant ou après la page qui contient le champ en question ?

#3

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

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

Lors d'une reprise de brouillon

Qui arrive avant ou après la page qui contient le champ en question ?

Pas compris.

#4

Mis à jour par Frédéric Péters il y a presque 5 ans

Quand tu charges le brouillon, tu es sur une page qui précède ou qui suit le champ en question ?

#5

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

Je crois que oui mais pas certain (reproduit une seule fois en reprenant le seul vieux brouillon que j'avais, sans prêter attention à ce point, pas réussi à reproduire avec des brouillons tout frais, au moins une des demandes en erreur remontée par Toulouse est aussi un reprise de brouillon, le code du connecteur relié à la data source plante volontairement si l'appli métier ne renvoie pas de token).

Je vais essayer de reproduire en local avec une data source bidon.

#6

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

Reproduit avec le formulaire (branché sur workflow par défaut) et ci-joint + une data source datasource-brouillon dans laquelle on met :

[{'id': '1', 'text': 'un', 'token': 'aaa'}, {'id': '2', 'text': 'deux', 'token': 'bbb'}]

Procédure : remplir la première page, en page deux s'interrompre, aller dans la data source pour supprimer l'entrée choisie en première page une du formulaire, reprendre la demande à partir du brouillon, on se retrouve bien avec

form_var_choix None (<type 'NoneType'>)
form_var_choix_raw 1

où manque form_var_choix_token.

#7

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Sujet changé de Données manquantes lors d'une reprise de bouillon sur champ liste lié à une data source à Données manquantes lors d'une reprise de bouillon sur champ liste lié à une data source (où la donnée n'existe plus)

où manque form_var_choix_token.

Qui n'existe en fait plus côté source de données.

Alors avoir la moitié des infos, ok, problème, mais la résolution pourrait tout aussi bien être d'assurer que form_var_date_raw est vide, ce qui amène à un gros morceau "en fin de formulaire, tout revalider", dont la possibilité même est discutable.

#8

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

Des précisions, le donné apparait déjà vide la page de validation.

D'une session de debug lors de la génération de celle-ci, ça passe dans wcs/formdef.py::create_view_form, à ce stade la donnée est bien là :

> /home/cazino/src/wcs/wcs/formdef.py(623)create_view_form()
    622             current_page_fields.append(field)
--> 623             value = dict.get(field.id)
    624             field.add_to_view_form(form, value)

ipdb> dict
{'1_structured': {'text': 'un', 'token': 'aaa', 'id': '1'}, 'is_recalled_draft': True, '1_display': 'un', '1': '1', '4': 'toto', 'draft_formdata_id': 4}                                                          
ipdb> field.id
'1'

Elle est 'perdue' par le field.add_to_view_form(form, value) qui va retaper dans la data source pour générer le widget :

> /home/cazino/src/wcs/wcs/fields.py(1288)add_to_view_form()
   1287     def add_to_view_form(self, form, value = None):
-> 1288         real_value = value
   1289         label_value = self.get_display_value(value)

ipdb> 
> /home/cazino/src/wcs/wcs/fields.py(1289)add_to_view_form()
   1288         real_value = value
-> 1289         label_value = self.get_display_value(value)
   1290         self.field_key = 'f%s' % self.id

ipdb> 
> /home/cazino/src/wcs/wcs/fields.py(1290)add_to_view_form()
   1289         label_value = self.get_display_value(value)
-> 1290         self.field_key = 'f%s' % self.id
   1291 

ipdb> label_value
ipdb> print label_value
None

Je ne sais si je suis dans un chemin de code qui ne gère que de l'affichage, et que pas d'incidences sur ce qui sera stocké, etc ...

#9

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Dupliqué par Bug #37143: Perte des valeurs d'affichage (display_value) et structurées des ItemField à la soumission ajouté
#11

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

Dupliqué/résolu via #56824, le scénario du commentaire #33302#note-6 amène désormais à une erreur qui précise que la valeur sélectionnée n'existe plus. (cf capture).

Formats disponibles : Atom PDF