Bug #8982
crash sur validation d'une liste à choix multiple avec data_source "structured"
Début:
13 novembre 2015
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Description
Un champ "child" liste à choix multiple, qui a en data_source une liste de dictionnaires complexes, l'affichage est bon, mais quand on valide et on arrive sur cette trace :
Exception: type = '<type 'exceptions.AttributeError'>', value = ''list' object has no attribute 'items'' Stack trace (most recent call first): File "/usr/lib/python2.7/dist-packages/wcs/formdata.py", line 77, in get_dict_with_varnames 75 structured_value = data.get('%s_structured' % field.id) 76 if structured_value: > 77 for k, v in structured_value.items(): 78 if k in ('id', 'text'): 79 continue locals: raw_value = ['sas_18', 'sas_19'] new_data = {'field_civilite': 'Mme', 'f4': 'sqqsd', 'field_telephone_fixe_personnel': None, 'f6': 'qsdqds', 'field_code_postal': None, 'var_child_raw': ['sas_18', 'sas_19'], 'f108': None, 'field_enfants_concernes': ['sas_18', 'sas_19'], 'field_complement_au_n_de_voie': None, 'f49': None, 'f48': None, 'field_nom': 'sqqsd', 'field_telephone_mobile_personnel': None, 'f177': 'Mme', 'field_courriel': None, 'field_type_de_voie': 'All\xc3\xa9e', 'field_complement_d_adresse_libre': None, 'field_numero_de_voie': None, 'f190': None, 'field_intitule_de_la_voie': None, 'f54': None, 'f197': 'All\xc3\xa9e', 'f52': None, 'f53': None, 'f51': None, 'field_prenom': 'qsdqds', 'f199': ['sas_18', 'sas_19'], 'f12': None, 'var_child': 'Ferdinand No\xc3\xabl, Tistou No\xc3\xabl', 'field_ville': None} fields = [<wcs.fields.PageField object at 0x7f0d952f4750>, <wcs.fields.CommentField object at 0x7f0d952f4ad0>, <wcs.fields.ItemField object at 0x7f0d952f4a50>, <wcs.fields.StringField object at 0x7f0d952f4a10>, <wcs.fields.StringField object at 0x7f0d952f4fd0>, <wcs.fields.EmailField object at 0x7f0d952f4390>, <wcs.fields.StringField object at 0x7f0d952f49d0>, <wcs.fields.StringField object at 0x7f0d952f4190>, <wcs.fields.PageField object at 0x7f0d952f4450>, <wcs.fields.CommentField object at 0x7f0d952f4cd0>, <wcs.fields.TitleField object at 0x7f0d952f4f10>, <wcs.fields.StringField object at 0x7f0d952f4550>, <wcs.fields.StringField object at 0x7f0d952f42d0>, <wcs.fields.ItemField object at 0x7f0d952f4410>, <wcs.fields.StringField object at 0x7f0d952f45d0>, <wcs.fields.StringField object at 0x7f0d951f8790>, <wcs.fields.StringField object at 0x7f0d951f8c50>, <wcs.fields.StringField object at 0x7f0d951f8f90>, <wcs.fields.PageField object at 0x7f0d951f8d90>, <wcs.fields.ItemsField object at 0x7f0d951f8e10>, <wcs.fields.ItemField object at 0x7f0d951f8a10>, <wcs.fields.ItemField object at 0x7f0d951f85d0>, <wcs.fields.ItemField object at 0x7f0d951f8e90>] formdata = <FormData id:None> value = ['sas_18', 'sas_19'] structured_value = [{u'first_name': u'Ferdinand', u'last_name': u'No\xebl', u'parental_autorithy_structured': {u'cellphone': u'', u'first_name': u'Thomas', u'last_name': u'No\xebl', u'age_in_days': 2108, u'title': {u'text': u'Monsieur', u'id': u'1'}, u'text': u'Thomas No\xebl', u'age': 5, u'profession': u'', u'birthdate': u'2010-02-03', u'id': u'sas_15', u'phone': u'0911223344', u'employer_address': None, u'index': 1, u'address': {u'city': {u'text': u'Alfortville', u'id': u'1'}, u'post_code': u'94140', u'btq': {u'text': u'', u'id': u'0'}, u'text': u'7 Rue CHARLES DE GAULLE', u'number': u'7', u'full': u'7 Rue CHARLES DE GAULLE, 94140 Alfortville', u'street': {u'text': u'CHARLES DE GAULLE', u'id': u'19'}, u'type_of_street': {u'text': u'Rue', u'id': u'11'}}, u'sas': True, u'email': u'tnoel@entrouvert.com'}, u'age_in_days': 1584, u'text': u'Ferdinand No\xebl', u'age': 4, u'birthdate': u'2011-07-13', u'sex': u'M', u'keywords': [u'enfant-annee-2011', u'enfant-age-4', u'enfant-age-plus-de-0', u'enfant-age-plus-de-1', u'enfant-age-plus-de-2', u'enfant-age-plus-de-3', u'enfant-age-moins-de-5', u'enfant-age-moins-de-6', u'enfant-age-moins-de-7', u'enfant-age-moins-de-8', u'enfant-age-moins-de-9', u'enfant-age-moins-de-10', u'enfant-age-moins-de-11', u'enfant-age-moins-de-12', u'enfant-age-moins-de-13', u'enfant-age-moins-de-14', u'enfant-age-moins-de-15', u'enfant-age-moins-de-16', u'enfant-age-moins-de-17', u'enfant-age-moins-de-18', u'enfant-age-moins-de-19', u'enfant-age-moins-de-20', u'enfant-non-inscrit'], u'birth_country': u'France', u'sas': True, u'birth_city': u'Massy', u'id': u'sas_18', u'parental_autorithy': [{u'id': u'sas_15'}]}, {u'first_name': u'Tistou', u'last_name': u'No\xebl', u'parental_autorithy_structured': {u'cellphone': u'', u'first_name': u'Thomas', u'last_name': u'No\xebl', u'age_in_days': 2108, u'title': {u'text': u'Monsieur', u'id': u'1'}, u'text': u'Thomas No\xebl', u'age': 5, u'profession': u'', u'birthdate': u'2010-02-03', u'id': u'sas_15', u'phone': u'0911223344', u'employer_address': None, u'index': 1, u'address': {u'city': {u'text': u'Alfortville', u'id': u'1'}, u'post_code': u'94140', u'btq': {u'text': u'', u'id': u'0'}, u'text': u'7 Rue CHARLES DE GAULLE', u'number': u'7', u'full': u'7 Rue CHARLES DE GAULLE, 94140 Alfortville', u'street': {u'text': u'CHARLES DE GAULLE', u'id': u'19'}, u'type_of_street': {u'text': u'Rue', u'id': u'11'}}, u'sas': True, u'email': u'tnoel@entrouvert.com'}, u'age_in_days': 1011, u'text': u'Tistou No\xebl', u'age': 2, u'birthdate': u'2013-02-05', u'sex': u'M', u'keywords': [u'enfant-annee-2013', u'enfant-age-2', u'enfant-age-plus-de-0', u'enfant-age-plus-de-1', u'enfant-age-moins-de-3', u'enfant-age-moins-de-4', u'enfant-age-moins-de-5', u'enfant-age-moins-de-6', u'enfant-age-moins-de-7', u'enfant-age-moins-de-8', u'enfant-age-moins-de-9', u'enfant-age-moins-de-10', u'enfant-age-moins-de-11', u'enfant-age-moins-de-12', u'enfant-age-moins-de-13', u'enfant-age-moins-de-14', u'enfant-age-moins-de-15', u'enfant-age-moins-de-16', u'enfant-age-moins-de-17', u'enfant-age-moins-de-18', u'enfant-age-moins-de-19', u'enfant-age-moins-de-20', u'enfant-non-inscrit'], u'birth_country': u'France', u'sas': True, u'birth_city': u'Massy', u'id': u'sas_19', u'parental_autorithy': [{u'id': u'sas_15'}]}] field = <wcs.fields.ItemsField object at 0x7f0d951f8e10> identifier_name = 'enfants_concernes' varnames_only = False data = {'199': ['sas_18', 'sas_19'], '194': 'Oui', '197': 'All\xc3\xa9e', '196': 'Non', '197_display': 'All\xc3\xa9e', '193': '10', '177': 'Mme', '48': None, '49': None, '199_display': 'Ferdinand No\xc3\xabl, Tistou No\xc3\xabl', '4': 'sqqsd', '6': 'qsdqds', '199_structured': [{u'first_name': u'Ferdinand', u'last_name': u'No\xebl', u'parental_autorithy_structured': {u'cellphone': u'', u'first_name': u'Thomas', u'last_name': u'No\xebl', u'age_in_days': 2108, u'title': {u'text': u'Monsieur', u'id': u'1'}, u'text': u'Thomas No\xebl', u'age': 5, u'profession': u'', u'birthdate': u'2010-02-03', u'id': u'sas_15', u'phone': u'0911223344', u'employer_address': None, u'index': 1, u'address': {u'city': {u'text': u'Alfortville', u'id': u'1'}, u'post_code': u'94140', u'btq': {u'text': u'', u'id': u'0'}, u'text': u'7 Rue CHARLES DE GAULLE', u'number': u'7', u'full': u'7 Rue CHARLES DE GAULLE, 94140 Alfortville', u'street': {u'text': u'CHARLES DE GAULLE', u'id': u'19'}, u'type_of_street': {u'text': u'Rue', u'id': u'11'}}, u'sas': True, u'email': u'tnoel@entrouvert.com'}, u'age_in_days': 1584, u'text': u'Ferdinand No\xebl', u'age': 4, u'birthdate': u'2011-07-13', u'sex': u'M', u'keywords': [u'enfant-annee-2011', u'enfant-age-4', u'enfant-age-plus-de-0', u'enfant-age-plus-de-1', u'enfant-age-plus-de-2', u'enfant-age-plus-de-3', u'enfant-age-moins-de-5', u'enfant-age-moins-de-6', u'enfant-age-moins-de-7', u'enfant-age-moins-de-8', u'enfant-age-moins-de-9', u'enfant-age-moins-de-10', u'enfant-age-moins-de-11', u'enfant-age-moins-de-12', u'enfant-age-moins-de-13', u'enfant-age-moins-de-14', u'enfant-age-moins-de-15', u'enfant-age-moins-de-16', u'enfant-age-moins-de-17', u'enfant-age-moins-de-18', u'enfant-age-moins-de-19', u'enfant-age-moins-de-20', u'enfant-non-inscrit'], u'birth_country': u'France', u'sas': True, u'birth_city': u'Massy', u'id': u'sas_18', u'parental_autorithy': [{u'id': u'sas_15'}]}, {u'first_name': u'Tistou', u'last_name': u'No\xebl', u'parental_autorithy_structured': {u'cellphone': u'', u'first_name': u'Thomas', u'last_name': u'No\xebl', u'age_in_days': 2108, u'title': {u'text': u'Monsieur', u'id': u'1'}, u'text': u'Thomas No\xebl', u'age': 5, u'profession': u'', u'birthdate': u'2010-02-03', u'id': u'sas_15', u'phone': u'0911223344', u'employer_address': None, u'index': 1, u'address': {u'city': {u'text': u'Alfortville', u'id': u'1'}, u'post_code': u'94140', u'btq': {u'text': u'', u'id': u'0'}, u'text': u'7 Rue CHARLES DE GAULLE', u'number': u'7', u'full': u'7 Rue CHARLES DE GAULLE, 94140 Alfortville', u'street': {u'text': u'CHARLES DE GAULLE', u'id': u'19'}, u'type_of_street': {u'text': u'Rue', u'id': u'11'}}, u'sas': True, u'email': u'tnoel@entrouvert.com'}, u'age_in_days': 1011, u'text': u'Tistou No\xebl', u'age': 2, u'birthdate': u'2013-02-05', u'sex': u'M', u'keywords': [u'enfant-annee-2013', u'enfant-age-2', u'enfant-age-plus-de-0', u'enfant-age-plus-de-1', u'enfant-age-moins-de-3', u'enfant-age-moins-de-4', u'enfant-age-moins-de-5', u'enfant-age-moins-de-6', u'enfant-age-moins-de-7', u'enfant-age-moins-de-8', u'enfant-age-moins-de-9', u'enfant-age-moins-de-10', u'enfant-age-moins-de-11', u'enfant-age-moins-de-12', u'enfant-age-moins-de-13', u'enfant-age-moins-de-14', u'enfant-age-moins-de-15', u'enfant-age-moins-de-16', u'enfant-age-moins-de-17', u'enfant-age-moins-de-18', u'enfant-age-moins-de-19', u'enfant-age-moins-de-20', u'enfant-non-inscrit'], u'birth_country': u'France', u'sas': True, u'birth_city': u'Massy', u'id': u'sas_19', u'parental_autorithy': [{u'id': u'sas_15'}]}], 'draft_formdata_id': 6, 'future_tracking_code': 'MVKVNWTH', '196_display': 'Non', '190': None, '108': None, '193_display': 'P\xc3\xa8re', '12': None, '54': None, '194_display': 'Oui', '51': None, '53': None, '52': None, '177_display': 'Mme'} display_value = 'Ferdinand No\xc3\xabl, Tistou No\xc3\xabl' File "/usr/lib/python2.7/dist-packages/wcs/formdata.py", line 363, in get_as_dict 361 362 def get_as_dict(self): > 363 return get_dict_with_varnames(self.formdef.fields, self.data, self) 364 365 def get_substitution_variables(self, minimal=False): locals: self = <FormData id:None>
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 8 ans
Tu pourrais attacher le bout de json avec la liste et ses données structurées ?
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Fichier 0001-formdata-fix-rendition-of-structured-items-in-substi.patch 0001-formdata-fix-rendition-of-structured-items-in-substi.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 8 ans
Frédéric Péters a écrit :
Tu pourrais attacher le bout de json avec la liste et ses données structurées ?
Il est visible sur la trace dans «structured_value» je pense ? Ou bien c'est autre chose ?
Mis à jour par Frédéric Péters il y a plus de 8 ans
Il s'agissait pour moi de pouvoir simplement reproduire en copiant/collant une URL dans une datasource sur mon wcs local, plutôt que de créer un truc approchant mais c'est finalement ce que j'ai fait et ça suffisait.
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Statut changé de En cours à Résolu (à déployer)
commit 4df04e0fa493a5ad2ccc410f7197c91ff50829c1 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Nov 13 19:45:33 2015 +0100 formdata: fix rendition of structured items in substitution variables (#8982)
formdata: fix rendition of structured items in substitution variables (#8982)