Bug #49195
crash KeyError: 'form_var_...' sur une visite de /inspect
0%
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/25065/
KeyError: 'form_var_proprietaire_global' File "wcs/qommon/substitution.py", line 199, in __getitem__ val = super(CompatibilityNamesDict, self).__getitem__(key) TypeError: string indices must be integers File "wcs/qommon/substitution.py", line 211, in __getitem__ current_dict = current_dict[part] KeyError: 'form_var_proprietaire_global' (14 additional frame(s) were not displayed) ... File "wcs/qommon/substitution.py", line 193, in get_flat_keys flatten(key) File "wcs/qommon/substitution.py", line 190, in flatten flatten(new_base, depth=new_depth) File "wcs/qommon/substitution.py", line 190, in flatten flatten(new_base, depth=new_depth) File "wcs/qommon/substitution.py", line 174, in flatten item = self[base] File "wcs/qommon/substitution.py", line 217, in __getitem__ raise KeyError(key)
Dans la trace,
substvars = {'form': <wcs.variables.LazyFormData object at 0x7fbc3f1785c0>, 'attachments': <wcs.workflows.AttachmentsSubstitutionProxy object at 0x7fbc3f1784e0>, ..., 'form_var_proprietaire': 'XXX route de Lorient', ...}
créée via formdef.get_substitution_variables(), qui ne devrait pas créer dans le dictionnaire les form_var_..., avoir juste le lazy 'form'.
Sauf que, formdata.workflow_data contient :
{... 'form_var_proprietaire': 'XXX Jean rue des cormorans',
On se trouve du coup avec les variables de formdata.workflow_data qui sont tapées en vrac par-dessus les autres, ce qui amène cette confusion de CompatibilityNamesDict.
1/ on pourrait dire que c'est un bug d'avoir voulu taper des variables avec ces mêmes noms.
mais 2/ on ne devrait pas ainsi mélanger les namespaces, on devrait avoir un form_workflow_data_ et dessous le contenu. (je pensais avoir déjà fait un bug là-dessus, mais je ne retrouve pas)
Reste que pour compatibilité avec l'existant on doit continuer à mettre ces données dans le namespace global, mais je serais pour ignorer les clés commençant par form_.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Projet changé de Suivi des traces à w.c.s.
- Sujet changé de KeyError: 'form_var_proprietaire_global' à crash KeyError: 'form_var_...' sur une visite de /inspect
- Description mis à jour (diff)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Fichier 0001-misc-ignore-workflow-data-will-conflict-with-the-for.patch 0001-misc-ignore-workflow-data-will-conflict-with-the-for.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Lié à Development #49196: exposer formdata.workflow_data sous form_workflow_data_… ajouté
Mis à jour par Thomas Noël il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 7169bd0ee956a0c0d3bfbce9f12b43f680c94793 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Dec 7 23:32:43 2020 +0100 misc: ignore workflow data will conflict with the "form*" namespace (#49195)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: ignore workflow data will conflict with the "form*" namespace (#49195)