Fix bug with breadcrumbs and request=None, closes #1849

pull/1912/head
Simon Willison 2022-10-26 14:13:31 -07:00
rodzic c7956eed77
commit 55f860c304
2 zmienionych plików z 15 dodań i 3 usunięć

Wyświetl plik

@ -639,15 +639,18 @@ class Datasette:
async def _crumb_items(self, request, table=None, database=None):
crumbs = []
actor = None
if request:
actor = request.actor
# Top-level link
if await self.permission_allowed(
actor=request.actor, action="view-instance", default=True
actor=actor, action="view-instance", default=True
):
crumbs.append({"href": self.urls.instance(), "label": "home"})
# Database link
if database:
if await self.permission_allowed(
actor=request.actor,
actor=actor,
action="view-database",
resource=database,
default=True,
@ -662,7 +665,7 @@ class Datasette:
if table:
assert database, "table= requires database="
if await self.permission_allowed(
actor=request.actor,
actor=actor,
action="view-table",
resource=(database, table),
default=True,

Wyświetl plik

@ -125,3 +125,12 @@ async def test_datasette_ensure_permissions_check_visibility(
visible, private = await ds.check_visibility(actor, permissions=permissions)
assert visible == should_allow
assert private == expected_private
@pytest.mark.asyncio
async def test_datasette_render_template_no_request():
# https://github.com/simonw/datasette/issues/1849
ds = Datasette([], memory=True)
await ds.invoke_startup()
rendered = await ds.render_template("error.html")
assert "Error " in rendered