opendatasoft: do not escape on template rendering (#52614)

This commit is contained in:
Nicolas Roche 2021-04-01 14:33:12 +02:00
parent ba4c394afc
commit 5e68865fdd
2 changed files with 5 additions and 8 deletions

View File

@ -16,13 +16,11 @@
from django.db import models
from django.shortcuts import get_object_or_404
from django.template import Context, Template
from django.urls import reverse
from django.utils.encoding import force_text
from django.utils.six.moves.urllib import parse as urlparse
from django.utils.translation import ugettext_lazy as _
from passerelle.utils.templates import validate_template
from passerelle.utils.templates import render_to_string, validate_template
from passerelle.base.models import BaseResource, BaseQuery
from passerelle.utils.api import endpoint
@ -105,8 +103,7 @@ class OpenDataSoft(BaseResource):
for key, value in record.get('fields').items():
data[key] = value
data['id'] = record.get('recordid')
template = Template(text_template)
data['text'] = template.render(Context(data)).strip()
data['text'] = render_to_string(text_template, data).strip()
result.append(data)
return {'data': result}

View File

@ -144,7 +144,7 @@ def query(connector):
slug='my_query',
description='Rechercher une adresse',
dataset='referentiel-adresse-test',
text_template='{{numero}} {{nom_rue|safe}} {{nom_commun}}',
text_template='{{numero}} {{nom_rue}} {{nom_commun}}',
)
@ -191,7 +191,7 @@ def test_search_using_q(mocked_get, app, connector):
assert endpoint == '/opendatasoft/my_connector/search'
params = {
'dataset': 'referentiel-adresse-test',
'text_template': '{{numero}} {{nom_rue|safe}} {{nom_commun}}',
'text_template': '{{numero}} {{nom_rue}} {{nom_commun}}',
'q': "rue de l'aubepine",
'rows': 3,
}
@ -221,7 +221,7 @@ def test_search_using_id(mocked_get, app, connector):
assert endpoint == '/opendatasoft/my_connector/search'
params = {
'dataset': 'referentiel-adresse-test',
'text_template': '{{numero}} {{nom_rue|safe}} {{nom_commun}}',
'text_template': '{{numero}} {{nom_rue}} {{nom_commun}}',
'id': '7cafcd5c692773e8b863587b2d38d6be82e023d8',
}
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_ID_SEARCH, status_code=200)