Projet

Général

Profil

Bug #49195

crash KeyError: 'form_var_...' sur une visite de /inspect

Ajouté par Sentry Io il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
07 décembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à w.c.s. - Development #49196: exposer formdata.workflow_data sous form_workflow_data_…Fermé07 décembre 2020

Actions

Révisions associées

Révision 7169bd0e (diff)
Ajouté par Frédéric Péters il y a plus de 3 ans

misc: ignore workflow data will conflict with the "form*" namespace (#49195)

Historique

#1

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)
#2

Mis à jour par Frédéric Péters il y a plus de 3 ans

#3

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é
#4

Mis à jour par Thomas Noël il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée
#5

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)
#6

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

Formats disponibles : Atom PDF