Projet

Général

Profil

Development #19261

permettre d'utiliser la syntaxe Django dans les template de cellule

Ajouté par Thomas Noël il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
06 octobre 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Combo - Development #34518: ne pas planter sur un gabarit d'url invalide dans un attribut d'une cellule texteFermé03 juillet 2019

Actions

Révisions associées

Révision 3956d105 (diff)
Ajouté par Thomas Noël il y a plus de 6 ans

utils: accept Django syntax in templated_url (#19261)

Historique

#2

Mis à jour par Thomas Noël il y a plus de 6 ans

  • Statut changé de Nouveau à En cours
#3

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 ?

#4

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) ?

#5

Mis à jour par Thomas Noël il y a plus de 6 ans

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).

#6

Mis à jour par Frédéric Péters il y a plus de 6 ans

Allez, zou.

#7

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)

#8

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
#9

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é

Formats disponibles : Atom PDF