From 226dde0d66850eb78927538079e9aaeee91cc255 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Fri, 27 Jan 2023 19:34:14 -0800 Subject: [PATCH] render_cell(..., request) argument, closes #2007 --- datasette/hookspecs.py | 2 +- datasette/views/database.py | 1 + datasette/views/row.py | 1 + datasette/views/table.py | 3 +++ docs/plugin_hooks.rst | 7 +++++-- tests/plugins/my_plugin.py | 29 +++++++++++++++-------------- tests/test_plugins.py | 5 ++++- 7 files changed, 30 insertions(+), 18 deletions(-) diff --git a/datasette/hookspecs.py b/datasette/hookspecs.py index bcd798d0..801073fc 100644 --- a/datasette/hookspecs.py +++ b/datasette/hookspecs.py @@ -60,7 +60,7 @@ def publish_subcommand(publish): @hookspec -def render_cell(row, value, column, table, database, datasette): +def render_cell(row, value, column, table, database, datasette, request): """Customize rendering of HTML table cell values""" diff --git a/datasette/views/database.py b/datasette/views/database.py index e47e0eed..dda82510 100644 --- a/datasette/views/database.py +++ b/datasette/views/database.py @@ -396,6 +396,7 @@ class QueryView(DataView): table=None, database=database, datasette=self.ds, + request=request, ): candidate = await await_me_maybe(candidate) if candidate is not None: diff --git a/datasette/views/row.py b/datasette/views/row.py index b3c45746..6e09f30e 100644 --- a/datasette/views/row.py +++ b/datasette/views/row.py @@ -51,6 +51,7 @@ class RowView(DataView): rows, link_column=False, truncate_cells=0, + request=request, ) for column in display_columns: column["sortable"] = False diff --git a/datasette/views/table.py b/datasette/views/table.py index f34745c9..8969f55b 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -783,6 +783,7 @@ class TableView(DataView): sortable_columns=await self.sortable_columns_for_table( database_name, table_name, use_rowid=True ), + request=request, ) metadata = ( (self.ds.metadata("databases") or {}) @@ -911,6 +912,7 @@ async def display_columns_and_rows( link_column=False, truncate_cells=0, sortable_columns=None, + request=None, ): """Returns columns, rows for specified table - including fancy foreign key treatment""" sortable_columns = sortable_columns or set() @@ -992,6 +994,7 @@ async def display_columns_and_rows( table=table_name, database=database_name, datasette=datasette, + request=request, ): candidate = await await_me_maybe(candidate) if candidate is not None: diff --git a/docs/plugin_hooks.rst b/docs/plugin_hooks.rst index 403e80fc..a4c9d98f 100644 --- a/docs/plugin_hooks.rst +++ b/docs/plugin_hooks.rst @@ -380,8 +380,8 @@ Examples: `datasette-publish-fly