From 3a4c8ed36aa97211e46849d32a09f2f386f342dd Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sun, 16 Aug 2020 11:09:53 -0700 Subject: [PATCH] Added columns argument to various extra_ plugin hooks, closes #938 --- datasette/app.py | 5 +- datasette/hookspecs.py | 12 +- docs/plugin_hooks.rst | 254 +++++++++++++++++-------------------- tests/plugins/my_plugin.py | 13 +- tests/test_plugins.py | 25 +++- 5 files changed, 159 insertions(+), 150 deletions(-) diff --git a/datasette/app.py b/datasette/app.py index 180ba246..2185a3ab 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -713,6 +713,7 @@ class Datasette: template=template.name, database=context.get("database"), table=context.get("table"), + columns=context.get("columns"), view_name=view_name, request=request, datasette=self, @@ -729,6 +730,7 @@ class Datasette: template=template.name, database=context.get("database"), table=context.get("table"), + columns=context.get("columns"), view_name=view_name, request=request, datasette=self, @@ -779,9 +781,10 @@ class Datasette: template=template.name, database=context.get("database"), table=context.get("table"), - datasette=self, + columns=context.get("columns"), view_name=view_name, request=request, + datasette=self, ): if callable(hook): hook = hook() diff --git a/datasette/hookspecs.py b/datasette/hookspecs.py index 0e9c20cf..f7e90e4e 100644 --- a/datasette/hookspecs.py +++ b/datasette/hookspecs.py @@ -26,22 +26,26 @@ def prepare_jinja2_environment(env): @hookspec -def extra_css_urls(template, database, table, view_name, request, datasette): +def extra_css_urls(template, database, table, columns, view_name, request, datasette): "Extra CSS URLs added by this plugin" @hookspec -def extra_js_urls(template, database, table, view_name, request, datasette): +def extra_js_urls(template, database, table, columns, view_name, request, datasette): "Extra JavaScript URLs added by this plugin" @hookspec -def extra_body_script(template, database, table, view_name, request, datasette): +def extra_body_script( + template, database, table, columns, view_name, request, datasette +): "Extra JavaScript code to be included in ") json_data = r.search(app_client.get(path).text).group(1) actual_data = json.loads(json_data) @@ -286,6 +308,7 @@ def test_hook_extra_template_vars(restore_working_directory): assert { "template": "show_json.html", "scope_path": "/-/metadata", + "columns": None, } == extra_template_vars extra_template_vars_from_awaitable = json.loads( Soup(response.body, "html.parser")