Bug #35811
Valeur du texte incorrecte sur un champ liste relié à une data source si la data source comporte un 'id_parameter'
0%
Description
De #35786, un champ liste (identifiant act_ecrite) branché sur une 'data source' wcs, la data source tape sur un connecteur csv.
Un fois le formulaire soumis, inspection des variables, on a form_var_act_ecrite_raw qui a bien l'identifiant de l'enregistrement sélectionné, mais par contre form_var_act_ecrite qui prend systématiquement le texte de la première ligne du csv, 'Rouen ville aux trésors' en l’occurrence.
La source de donnés https://formulaires.demarches.rouen.fr/backoffice/settings/data-sources/3/, dans son export xml il y a un '<id_parameter>actions_ecrites_culture</id_parameter>' (je ne sais pas ce que c'est que ce truc par rapport au slug, comment c'est arrivé là).
Je reproduis en local et je tombe dans wcs/data_sources.py :
def get_structured_value(self, option_id): value = None if self.type == 'json' and self.id_parameter: resp = self.load_json(self.id_parameter, option_id) response = qommon.misc.json_loads(resp) if response['data']: value = response['data'][0] <- c'est ça qui sort le label de la première ligne du csv ipdb> pp response {'data': [{'id': '1', 'text': 'Rouen ville aux tr\xc3\xa9sors'}, {'id': '2', 'text': 'L\xe2\x80\x99exp\xc3\xa9dition de la Dauphine'}, {'id': '3', 'text': 'Matin\xc3\xa9e chant\xc3\xa9e des tout-petits'}, {'id': '4', 'text': 'Concerts allong\xc3\xa9s'}, {'id': '5', 'text': 'Le basson : grand \xe2\x80\x93p\xc3\xa8re dites-vous ?'}, {'id': '6', 'text': 'Imagine \xc3\xa0 sons'}, {'id': '7', 'text': 'Les instruments dans les musiques actuelles'}, {'id': '8', 'text': 'Autour du spectacle'}, {'id': '9', 'text': 'Com\xc3\xa9diens en herbe !'}, {'id': '10', 'text': 'La couleur des \xc3\xa9motions'}, {'id': '11', 'text': '\xc3\x89meus-toi'}, {'id': '12', 'text': 'Parcours de sensibilisation autour du genre'}, {'id': '13', 'text': 'Mots en sc\xc3\xa8ne !'}, {'id': '14', 'text': 'Une journ\xc3\xa9e de rencontre au conservatoire'}, {'id': '15', 'text': 'Kissihou'}, {'id': '16', 'text': 'Teinture, couleurs et nuancier'}, {'id': '17', 'text': 'Art contemporain'}, {'id': '18', 'text': 'Le ha\xc3\xafku version num\xc3\xa9rique'}, {'id': '19', 'text': 'Webdoc \xe2\x80\x93 street-art'}, {'id': '20', 'text': 'Buffet'}], 'err': 0}
En contournement il y a :
- taper directement l'URL du JSON dans le champ liste
- créer un nouvelle source de données (qui se retrouve sans id_parameter même si on lui assigne un identifiant, celui ci se retrouvant dans le slug)
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
créer un nouvelle source de données (qui se retrouve sans id_parameter même si on lui assigne un identifiant, celui ci se retrouvant dans le slug)
Je me suis embrouillé là dessus, ne rien faire, me laisser affiner le diagnostique.
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Nouveau à Rejeté
Le "paramètre d'identifiant" c'est le paramètre qu'on peut passer dans la query string pour faire une requête retournant uniquement l'élément correspondant, typiquement "id". Le "paramètre de requête" c'est le paramètre qu'on peut passer dans la query string pour faire une requête retournant une série de résultats filtrés selon le paramètre, typiquement "q".
Le paramétrage de la source de données dit là que pour obtenir l'info d'un élément il suffit de faire https://passerelle.demarches.rouen.fr/csvdatasource/fichier-tableur-actions-educatives-culture-act/data?actions_ecrites_culture=<id>.
Cette requête pourtant retournera l'ensemble des éléments. (peut-être que ce connecteur devrait faire une erreur 400 en présence de paramètres inconnus ?).
Donc, erreur de configuration.