Stop using firstresult=True on render_cell, refs #1425

See https://github.com/simonw/datasette/issues/1425#issuecomment-894883664
This commit is contained in:
Simon Willison 2021-08-08 17:38:42 -07:00
commit a390bdf9ce
3 changed files with 18 additions and 10 deletions

View file

@ -354,16 +354,20 @@ class QueryView(DataView):
display_value = value
# Let the plugins have a go
# pylint: disable=no-member
plugin_value = pm.hook.render_cell(
plugin_display_value = None
for candidate in pm.hook.render_cell(
value=value,
column=column,
table=None,
database=database,
datasette=self.ds,
)
plugin_value = await await_me_maybe(plugin_value)
if plugin_value is not None:
display_value = plugin_value
):
candidate = await await_me_maybe(candidate)
if candidate is not None:
plugin_display_value = candidate
break
if plugin_display_value is not None:
display_value = plugin_display_value
else:
if value in ("", None):
display_value = Markup(" ")

View file

@ -191,15 +191,19 @@ class RowTableShared(DataView):
# First let the plugins have a go
# pylint: disable=no-member
plugin_display_value = pm.hook.render_cell(
plugin_display_value = None
for candidate in pm.hook.render_cell(
value=value,
column=column,
table=table,
database=database,
datasette=self.ds,
)
plugin_display_value = await await_me_maybe(plugin_display_value)
if plugin_display_value is not None:
):
candidate = await await_me_maybe(candidate)
if candidate is not None:
plugin_display_value = candidate
break
if plugin_display_value:
display_value = plugin_display_value
elif isinstance(value, bytes):
display_value = markupsafe.Markup(