Development #28439
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
J'ai eu le besoin récemment par mon CPF (connecteur ATOS-Genesys, #28381) de transformer les données d'un web-service pour les besoins d'un template de
<pre>[{'xxx': yyy, ..}, {'xxx': zzz, ..}]</pre>
vers
<pre>{'yyy': [{'xxx': yyy, ...}], 'zzz': [{'xxx': zzz, ...}]}</pre>
pour permettre de traiter les données de type @yyy@ séparément des données de type @zzz@, notamment pour le CD06 de les compter
Ça me semble être des manipulations courante coté template et formulaires et je propose qu'on ajoute de quoi manipuler ces structures via JSONPath pour éviter un travail un peu inutile et répétitif coté connecteur (une fois les données exposées le travail devrait être terminé).
Pour cela je propose deux choses:
* pour les templates combo et les conditions Django de w.c.s., un filtre de template de la forme <pre>|jsonpath:"expression"</pre>
* pour les conditions python dans w.c.s. une bête fonction <pre>jsonpath(data, expression)</pre>
Sur cet exemple la solution serait <pre>{% if data|jsonpath:"$[?(@.xxx == "yyy")]"|length %}...{% endif %}</pre>
<pre>[{'xxx': yyy, ..}, {'xxx': zzz, ..}]</pre>
vers
<pre>{'yyy': [{'xxx': yyy, ...}], 'zzz': [{'xxx': zzz, ...}]}</pre>
pour permettre de traiter les données de type @yyy@ séparément des données de type @zzz@, notamment pour le CD06 de les compter
Ça me semble être des manipulations courante coté template et formulaires et je propose qu'on ajoute de quoi manipuler ces structures via JSONPath pour éviter un travail un peu inutile et répétitif coté connecteur (une fois les données exposées le travail devrait être terminé).
Pour cela je propose deux choses:
* pour les templates combo et les conditions Django de w.c.s., un filtre de template de la forme <pre>|jsonpath:"expression"</pre>
* pour les conditions python dans w.c.s. une bête fonction <pre>jsonpath(data, expression)</pre>
Sur cet exemple la solution serait <pre>{% if data|jsonpath:"$[?(@.xxx == "yyy")]"|length %}...{% endif %}</pre>