kopia lustrzana https://github.com/simonw/datasette
Fix display of padlocks on database page, closes #1848
rodzic
78dad236df
commit
5be86d48b2
|
@ -68,8 +68,11 @@ class DatabaseView(DataView):
|
||||||
for view_name in await db.view_names():
|
for view_name in await db.view_names():
|
||||||
view_visible, view_private = await self.ds.check_visibility(
|
view_visible, view_private = await self.ds.check_visibility(
|
||||||
request.actor,
|
request.actor,
|
||||||
"view-table",
|
permissions=[
|
||||||
(database, view_name),
|
("view-table", (database, view_name)),
|
||||||
|
("view-database", database),
|
||||||
|
"view-instance",
|
||||||
|
],
|
||||||
)
|
)
|
||||||
if view_visible:
|
if view_visible:
|
||||||
views.append(
|
views.append(
|
||||||
|
@ -83,8 +86,11 @@ class DatabaseView(DataView):
|
||||||
for table in table_counts:
|
for table in table_counts:
|
||||||
table_visible, table_private = await self.ds.check_visibility(
|
table_visible, table_private = await self.ds.check_visibility(
|
||||||
request.actor,
|
request.actor,
|
||||||
"view-table",
|
permissions=[
|
||||||
(database, table),
|
("view-table", (database, table)),
|
||||||
|
("view-database", database),
|
||||||
|
"view-instance",
|
||||||
|
],
|
||||||
)
|
)
|
||||||
if not table_visible:
|
if not table_visible:
|
||||||
continue
|
continue
|
||||||
|
@ -109,8 +115,11 @@ class DatabaseView(DataView):
|
||||||
).values():
|
).values():
|
||||||
query_visible, query_private = await self.ds.check_visibility(
|
query_visible, query_private = await self.ds.check_visibility(
|
||||||
request.actor,
|
request.actor,
|
||||||
"view-query",
|
permissions=[
|
||||||
(database, query["name"]),
|
("view-query", (database, query["name"])),
|
||||||
|
("view-database", database),
|
||||||
|
"view-instance",
|
||||||
|
],
|
||||||
)
|
)
|
||||||
if query_visible:
|
if query_visible:
|
||||||
canned_queries.append(dict(query, private=query_private))
|
canned_queries.append(dict(query, private=query_private))
|
||||||
|
|
|
@ -493,4 +493,37 @@ def test_permissions_cascade(cascade_app_client, path, permissions, expected_sta
|
||||||
path, permissions, expected_status, response.status
|
path, permissions, expected_status, response.status
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
cascade_app_client.ds._local_metadata = previous_metadata
|
cascade_app_client.ds._metadata_local = previous_metadata
|
||||||
|
|
||||||
|
|
||||||
|
def test_padlocks_on_database_page(cascade_app_client):
|
||||||
|
metadata = {
|
||||||
|
"databases": {
|
||||||
|
"fixtures": {
|
||||||
|
"allow": {"id": "test"},
|
||||||
|
"tables": {
|
||||||
|
"123_starts_with_digits": {"allow": True},
|
||||||
|
"simple_view": {"allow": True},
|
||||||
|
},
|
||||||
|
"queries": {"query_two": {"allow": True, "sql": "select 2"}},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
previous_metadata = cascade_app_client.ds._metadata_local
|
||||||
|
try:
|
||||||
|
cascade_app_client.ds._metadata_local = metadata
|
||||||
|
response = cascade_app_client.get(
|
||||||
|
"/fixtures",
|
||||||
|
cookies={"ds_actor": cascade_app_client.actor_cookie({"id": "test"})},
|
||||||
|
)
|
||||||
|
# Tables
|
||||||
|
assert ">123_starts_with_digits</a></h3>" in response.text
|
||||||
|
assert ">Table With Space In Name</a> 🔒</h3>" in response.text
|
||||||
|
# Queries
|
||||||
|
assert ">from_async_hook</a> 🔒</li>" in response.text
|
||||||
|
assert ">query_two</a></li>" in response.text
|
||||||
|
# Views
|
||||||
|
assert ">paginated_view</a> 🔒</li>" in response.text
|
||||||
|
assert ">simple_view</a></li>" in response.text
|
||||||
|
finally:
|
||||||
|
cascade_app_client.ds._metadata_local = previous_metadata
|
||||||
|
|
Ładowanie…
Reference in New Issue