Bug #52624
opendatasoft, désactiver l'autoescape dans le rendu du template du champ "text"
0%
Description
Si on récupère une apostrophe dans un champs utilisé pour le rendu du template,
alors l’apostrophe est échappée : "nom_rue": "Grand\'Rue"
donne :
"text": "107 Grand 'Rue (67000 Strasbourg)"}
Fichiers
Historique
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier 0001-opendatasoft-do-not-escape-on-template-rendering-526.patch 0001-opendatasoft-do-not-escape-on-template-rendering-526.patch ajouté
- Tracker changé de Support à Bug
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a environ 3 ans
J'imagine qu'au moins nom_commun pourrait aussi nécessiter un safe et donc je verrais plutôt un usage global de "{% autoescape off } ... { endautoescape %}", non ?
Mis à jour par Nicolas Roche il y a environ 3 ans
J'ai l'impression que c'est déjà le cas : le patch déporte le rendu dans passerelle/utils/templates.py::render_to_string (introduit par #27782) qui sert justement à faire l'autoescape off si j'ai bien compris
(je dirais que le problème ne porte pas sur les champs renvoyé par opendatasoft mais sur le champ "text" que le connecteur ajoute).
Mis à jour par Thomas Noël il y a environ 3 ans
Mal lu ton patch, pas vu que le |safe était dans les tests. Et donc je ne comprends pas pourquoi tu modifies les tests...?
Mis à jour par Nicolas Roche il y a environ 3 ans
pourquoi tu modifies les tests...?
Pour montrer que mon patch change quelque-chose.
(au départ j'avais mis |safe
dans les tests parce que je n'avais pas compris comment corriger ce bug directement dans le connecteur)
Mis à jour par Thomas Noël il y a environ 3 ans
Nicolas Roche a écrit :
pourquoi tu modifies les tests...?
Pour montrer que mon patch change quelque-chose.
(au départ j'avais mis|safe
dans les tests parce que je n'avais pas compris comment corriger ce bug directement dans le connecteur)
Tu écris "au départ" mais là je vois toujours des "|safe" dans les tests...?
En fait je m'attendais à un test qui modifie un json reçu de opendatasoft, contenant une apostrophe, et montre bien que Passerelle renvoie l'apostrophe tel quel... je suis un peu perdu :)
Mis à jour par Nicolas Roche il y a environ 3 ans
là je vois toujours des "|safe" dans les tests
alors c'est un oubli de ma part, mais pourtant moi je n'en vois pas...
https://git.entrouvert.org/passerelle.git/tree/passerelle/apps/opendatasoft/models.py?h=wip/52624-opendatasoft-do-not-autoescape
En fait je m'attendais à un test qui modifie un json reçu de opendatasoft, contenant une apostrophe, et montre bien que Passerelle renvoie l'apostrophe tel quel.
Il était déjà là avant ce patch, mais pour cela le test spécifiait "|safe" dans le template.
(à mon avis c'est là l'embrouille)
https://git.entrouvert.org/passerelle.git/tree/tests/test_opendatasoft.py?h=wip/52624-opendatasoft-do-not-autoescape#n210
Mis à jour par Nicolas Roche il y a environ 3 ans
Oui, la confusion vient (à mon avis pour l'essentiel) du fait que j'avais dès le début prévu l'apostrophe dans les tests.
En fait je m'attendais à un test qui modifie un json reçu de opendatasoft, contenant une apostrophe, et montre bien que Passerelle renvoie l'apostrophe tel quel...
voir par exemple :
FAKED_CONTENT_Q_SEARCH = json.dumps( ... "nom_rue": "RUE DE L'AUBEPINE", def test_search_using_q(mocked_get, app, connector): ... # check text results assert [x['text'] for x in resp.json['data']] == [ "33 RUE DE L'AUBEPINE Strasbourg",
Mis à jour par Frédéric Péters il y a environ 3 ans
Ok c'est laborieux, pour proposer une version alternative de la description de ce ticket :
Aujourd'hui le gabarit utilisé doit penser à inclure les |safe pour éviter l'échappement d'apostrophes, c'est parfois oublié et pour éviter ça, ce ticket pour que l'échappement soit désactivé par défaut.
Mis à jour par Thomas Noël il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Ca s'éclaire (sans doute aussi parce que j'ai bien dormi cette nuit).
Mis à jour par Nicolas Roche il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 5e68865fddafd04d431ecf855c644591557b15cf Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Thu Apr 1 14:33:12 2021 +0200 opendatasoft: do not escape on template rendering (#52614)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
(commit avec mauvais numéro de ticket)