Development #19261
permettre d'utiliser la syntaxe Django dans les template de cellule
0%
Description
D'abord pour les cellules JSON paramétrées, mais peut-être ailleurs, il serait très utile de pouvoir indiquer des URL comme « http://www/?id=[json.data.id] » où json est le résultat d'une requête précédente.
Par exemple: je fais une requête pour connaitre l'association reliée à la personne, puis j'interroge la base des associations pour avoir les détails sur cette assoce, et de cette assoce je cherche latitude et longitude... ça donnerait :
'test-config-json-cell-2': { 'name': 'Foobar', 'url': 'http://persons/?nameid=[user_nameid]', 'additional-data': [ {'key': 'assoce', 'url': 'http://assoces/?id=[json.assoce.id]'}, {'key': 'latlng', 'url': 'http://nominatim/?q=[assoce.address]'}, ] }}
En suivant ce qu'on fait dans ezt, c-a-d y compris la gestion des listes avec list.0, list.1, etc.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 6 ans
- Fichier 0001-utils-handle-foo.bar-dot-syntax-in-templated_url-192.patch 0001-utils-handle-foo.bar-dot-syntax-in-templated_url-192.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a plus de 6 ans
Ou se dire que le plan devrait désormais être de permettre l'utilisation de templates django, maintenant que c'est techniquement possible côté w.c.s. également ?
Mis à jour par Thomas Noël il y a plus de 6 ans
Frédéric Péters a écrit :
Ou se dire que le plan devrait désormais être de permettre l'utilisation de templates django, maintenant que c'est techniquement possible côté w.c.s. également ?
Yep, ça éviterait ce code un peu moche, malgré tout...
Dans ce cas il faut qu'on se pose la question de comment déterminer l'un ou l'autre : se baser sur la présence de {{ ou {% pour dire que c'est du django, et sinon c'est de l'ezt (ou ezt-like) ?
Mis à jour par Thomas Noël il y a plus de 6 ans
- Fichier 0001-utils-accept-Django-syntax-in-templated_url-19261.patch 0001-utils-accept-Django-syntax-in-templated_url-19261.patch ajouté
- Sujet changé de permettre d'utiliser foo.bar dans get_templated_url à permettre d'utiliser la syntaxe Django dans les template de cellule
Voici un patch qui joue avec Django.
Top optimisation Green Computing : on ne lance le calcul que s'il y a {{ {% ou [ dans l'url.
On utilise la syntaxe Django en présence de {{ ou {%. Sinon c'est le ezt-like qui continue son travail. J'ai regroupé les cas d'erreur possibles dans un cas comme dans l'autre sous un même chapeau "TemplateError".
Ah, tout de même : comme en Django, l'absence d'une variable ne gène pas, une URL de type « https://www/truc/{{ truc.id }}
» deviendra « https://www/truc/
» si truc
n'est pas là ou n'a pas de id
. C'est certainement non désiré, aussi j'ai modifié le comportement de la cellule JSON : si une URL rendue est vide, alors n'est pas interrogée. Ce qui veut dire qu'il faudra écrire « {% if truc.id %}https://www/truc/{{ truc.id }}{% endif %}
», et ainsi aucune requête ne sera tentée, et ça me semble bien de pouvoir contrôler ainsi. J'ai du un peu adapter le code des tests en fonction de ça, parce qu'à un moment on testait une cellule sans URL (mais avec un requests.get mocké qui répondait 200, donc le test n'avait pas trop de sens, donc c'est pas grave).
Mis à jour par Thomas Noël il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit 3956d105ae230cf117fe814f05da943ab900f802 Author: Thomas NOEL <tnoel@entrouvert.com> Date: Sat Oct 7 18:55:17 2017 +0200 utils: accept Django syntax in templated_url (#19261)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Nicolas Roche il y a plus de 4 ans
- Lié à Development #34518: ne pas planter sur un gabarit d'url invalide dans un attribut d'une cellule texte ajouté
utils: accept Django syntax in templated_url (#19261)