Development #64548
set_value sur ItemsField, lever une exception adéquate en cas de mauvaise donnée
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).