Projet

Général

Profil

Development #64548

set_value sur ItemsField, lever une exception adéquate en cas de mauvaise donnée

Ajouté par Frédéric Péters il y a presque 2 ans. Mis à jour il y a 6 mois.

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

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Si c'est un entier qui est passé ça explose en TypeError,

Exception:

  type = '<class 'TypeError'>', value = ''int' object is not iterable'

Stack trace (most recent call first):
  File "…/wcs/wcs/fields.py", line 2483, in store_display_value
  2481             return ''
  2482         choices = []
> 2483         for choice in data.get(field_id) or []:
  2484             if isinstance(options[0], str):
  2485                 choices.append(choice)

  locals: 
     choices = []
     data = {'520': 2}
     field_id = '520'
     options = [('1', 'Poussière', '1'), ('2', 'Réunions', '2'), ('3', 'MEP', '3')]
     raise_on_error = False
     self = <ItemsField 520 'Quelles sont les allergies de votre enfant ?'>

  File "…/wcs/wcs/fields.py", line 650, in set_value
   648         data['%s' % self.id] = value

Mais si c'est une chaine ça va itérer dessus avec succès et ça donnera l'impression de marcher sur des id à un chiffre, avant d'arriver à un résultat incompréhensible, trop tard. Il faudrait donc également lever SetValueError en cas de chaine (ça amènera peut-être des erreurs sur certains sites, où ça marchait par hasard, il y aura à être attentif et les corriger).

Historique

#1

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

  • Description mis à jour (diff)
#3

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

  • Statut changé de Nouveau à Fermé

Il y a eu #66995 pour contrôler les données reçues et #76568 pour mieux gérer encore.

Formats disponibles : Atom PDF