Skip to content

Commit d940f42

Browse files
committed
datasette-create-view for datasette>=1.0a20
Refs simonw/datasette#2577
1 parent 4c67289 commit d940f42

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

datasette_create_view/__init__.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datasette import hookimpl, Response
2+
from datasette.resources import DatabaseResource
23
from datasette.utils import derive_named_parameters
34
import urllib
45

@@ -14,8 +15,11 @@ async def inner():
1415
if parameters:
1516
return
1617
# User must have create-table permission
17-
if not await datasette.permission_allowed(
18-
actor, "create-table", resource=database
18+
database_resource = DatabaseResource(database)
19+
if not await datasette.allowed(
20+
actor=actor,
21+
action="create-table",
22+
resource=database_resource,
1923
):
2024
return
2125
return [
@@ -38,6 +42,7 @@ async def inner():
3842
async def create_view(request, datasette):
3943
database = request.url_vars["database"]
4044
db = datasette.get_database(database)
45+
database_resource = DatabaseResource(database)
4146
if request.method == "POST":
4247
post_vars = await request.post_vars()
4348
sql = (post_vars.get("sql") or "").strip()
@@ -52,8 +57,10 @@ async def create_view(request, datasette):
5257
}
5358
)
5459
)
55-
if not await datasette.permission_allowed(
56-
request.actor, "create-table", resource=database
60+
if not await datasette.allowed(
61+
actor=request.actor,
62+
action="create-table",
63+
resource=database_resource,
5764
):
5865
datasette.add_message(
5966
request,

pyproject.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ version = "0.1a1"
44
description = "Create a SQL view from a query"
55
readme = "README.md"
66
authors = [{name = "Simon Willison"}]
7-
license = {text = "Apache-2.0"}
7+
license = "Apache-2.0"
88
classifiers=[
9-
"Framework :: Datasette",
10-
"License :: OSI Approved :: Apache Software License"
9+
"Framework :: Datasette"
1110
]
12-
requires-python = ">=3.8"
11+
requires-python = ">=3.10"
1312
dependencies = [
14-
"datasette==1.0a19"
13+
"datasette>=1.0a21"
1514
]
1615

1716
[project.urls]

tests/test_create_view.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
)
1515
async def test_query_action_menu(actor, sql, should_see_option):
1616
datasette = Datasette()
17+
datasette.root_enabled = True
1718
db = datasette.add_memory_database("test")
1819
cookies = {}
1920
if actor:
@@ -56,6 +57,7 @@ async def test_query_action_menu(actor, sql, should_see_option):
5657
async def test_create_view_errors(actor, args, expected_error):
5758
# Get csfrtoken
5859
datasette = Datasette()
60+
datasette.root_enabled = True
5961
db = datasette.add_memory_database("test")
6062
cookies = {}
6163
if actor:
@@ -79,6 +81,7 @@ async def test_create_view_errors(actor, args, expected_error):
7981
@pytest.mark.asyncio
8082
async def test_happy_path():
8183
datasette = Datasette()
84+
datasette.root_enabled = True
8285
db = datasette.add_memory_database("test")
8386
cookies = {"ds_actor": datasette.client.actor_cookie({"id": "root"})}
8487
get_response = await datasette.client.get("/test/-/create-view", cookies=cookies)

0 commit comments

Comments
 (0)