Expose extra_template_vars in _contex=1, refs #693

This commit is contained in:
Simon Willison 2020-04-05 11:49:15 -07:00
commit e89b0ef2f9
3 changed files with 14 additions and 11 deletions

View file

@ -14,6 +14,7 @@ from pathlib import Path
import click import click
from markupsafe import Markup from markupsafe import Markup
import jinja2
from jinja2 import ChoiceLoader, Environment, FileSystemLoader, PrefixLoader, escape from jinja2 import ChoiceLoader, Environment, FileSystemLoader, PrefixLoader, escape
from jinja2.environment import Template from jinja2.environment import Template
import uvicorn import uvicorn
@ -612,6 +613,11 @@ class Datasette:
}, },
**extra_template_vars, **extra_template_vars,
} }
if request and request.args.get("_context") and self.config("template_debug"):
return "<pre>{}</pre>".format(
jinja2.escape(json.dumps(template_context, default=repr, indent=4))
)
return await template.render_async(template_context) return await template.render_async(template_context)
def _asset_urls(self, key, template, context): def _asset_urls(self, key, template, context):

View file

@ -6,7 +6,6 @@ import re
import time import time
import urllib import urllib
import jinja2
import pint import pint
from datasette import __version__ from datasette import __version__
@ -82,16 +81,6 @@ class BaseView(AsgiView):
"database_color": self.database_color, "database_color": self.database_color,
}, },
} }
if (
request
and request.args.get("_context")
and self.ds.config("template_debug")
):
return Response.html(
"<pre>{}</pre>".format(
jinja2.escape(json.dumps(template_context, default=repr, indent=4))
)
)
return Response.html( return Response.html(
await self.ds.render_template( await self.ds.render_template(
template, template_context, request=request, view_name=self.name template, template_context, request=request, view_name=self.name

View file

@ -1097,6 +1097,14 @@ def test_config_template_debug_off(app_client):
assert not response.text.startswith("<pre>{") assert not response.text.startswith("<pre>{")
def test_debug_context_includes_extra_template_vars():
# https://github.com/simonw/datasette/issues/693
for client in make_app_client(config={"template_debug": True}):
response = client.get("/fixtures/facetable?_context=1")
# scope_path is added by PLUGIN1
assert "scope_path" in response.text
def test_metadata_sort(app_client): def test_metadata_sort(app_client):
response = app_client.get("/fixtures/facet_cities") response = app_client.get("/fixtures/facet_cities")
assert response.status == 200 assert response.status == 200