Projet

Général

Profil

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>

Retour