Rename route match groups for consistency, refs #1667, #1660

pull/1685/head
Simon Willison 2022-03-19 09:52:08 -07:00
rodzic 764738dfcb
commit 61419388c1
8 zmienionych plików z 36 dodań i 40 usunięć

Wyświetl plik

@ -988,7 +988,7 @@ class Datasette:
# Generate a regex snippet to match all registered renderer file extensions
renderer_regex = "|".join(r"\." + key for key in self.renderers.keys())
add_route(IndexView.as_view(self), r"/(?P<as_format>(\.jsono?)?$)")
add_route(IndexView.as_view(self), r"/(?P<format>(\.jsono?)?$)")
# TODO: /favicon.ico and /-/static/ deserve far-future cache expires
add_route(favicon, "/favicon.ico")
@ -1020,21 +1020,21 @@ class Datasette:
)
add_route(
JsonDataView.as_view(self, "metadata.json", lambda: self.metadata()),
r"/-/metadata(?P<as_format>(\.json)?)$",
r"/-/metadata(?P<format>(\.json)?)$",
)
add_route(
JsonDataView.as_view(self, "versions.json", self._versions),
r"/-/versions(?P<as_format>(\.json)?)$",
r"/-/versions(?P<format>(\.json)?)$",
)
add_route(
JsonDataView.as_view(
self, "plugins.json", self._plugins, needs_request=True
),
r"/-/plugins(?P<as_format>(\.json)?)$",
r"/-/plugins(?P<format>(\.json)?)$",
)
add_route(
JsonDataView.as_view(self, "settings.json", lambda: self._settings),
r"/-/settings(?P<as_format>(\.json)?)$",
r"/-/settings(?P<format>(\.json)?)$",
)
add_route(
permanent_redirect("/-/settings.json"),
@ -1046,15 +1046,15 @@ class Datasette:
)
add_route(
JsonDataView.as_view(self, "threads.json", self._threads),
r"/-/threads(?P<as_format>(\.json)?)$",
r"/-/threads(?P<format>(\.json)?)$",
)
add_route(
JsonDataView.as_view(self, "databases.json", self._connected_databases),
r"/-/databases(?P<as_format>(\.json)?)$",
r"/-/databases(?P<format>(\.json)?)$",
)
add_route(
JsonDataView.as_view(self, "actor.json", self._actor, needs_request=True),
r"/-/actor(?P<as_format>(\.json)?)$",
r"/-/actor(?P<format>(\.json)?)$",
)
add_route(
AuthTokenView.as_view(self),
@ -1080,22 +1080,18 @@ class Datasette:
PatternPortfolioView.as_view(self),
r"/-/patterns$",
)
add_route(
DatabaseDownload.as_view(self), r"/(?P<db_name>[^/]+?)(?P<as_db>\.db)$"
)
add_route(DatabaseDownload.as_view(self), r"/(?P<database>[^/]+?)\.db$")
add_route(
DatabaseView.as_view(self),
r"/(?P<db_name>[^/]+?)(?P<as_format>"
+ renderer_regex
+ r"|.jsono|\.csv)?$",
r"/(?P<database>[^/]+?)(?P<format>" + renderer_regex + r"|.jsono|\.csv)?$",
)
add_route(
TableView.as_view(self),
r"/(?P<db_name>[^/]+)/(?P<table>[^\/\.]+)(\.[a-zA-Z0-9_]+)?$",
r"/(?P<database>[^/]+)/(?P<table>[^\/\.]+)(\.[a-zA-Z0-9_]+)?$",
)
add_route(
RowView.as_view(self),
r"/(?P<db_name>[^/]+)/(?P<table>[^/]+?)/(?P<pk_path>[^/]+?)(?P<as_format>"
r"/(?P<database>[^/]+)/(?P<table>[^/]+?)/(?P<pks>[^/]+?)(?P<format>"
+ renderer_regex
+ r")?$",
)

Wyświetl plik

@ -34,8 +34,8 @@ async def render_blob(datasette, database, rows, columns, request, table, view_n
filename_bits = []
if table:
filename_bits.append(to_css_class(table))
if "pk_path" in request.url_vars:
filename_bits.append(request.url_vars["pk_path"])
if "pks" in request.url_vars:
filename_bits.append(request.url_vars["pks"])
filename_bits.append(to_css_class(blob_column))
if blob_hash:
filename_bits.append(blob_hash[:6])

Wyświetl plik

@ -381,7 +381,7 @@ class DataView(BaseView):
return None
async def get(self, request):
db_name = request.url_vars["db_name"]
db_name = request.url_vars["database"]
database = tilde_decode(db_name)
_format = self.get_format(request)
data_kwargs = {}

Wyświetl plik

@ -32,7 +32,7 @@ class DatabaseView(DataView):
name = "database"
async def data(self, request, default_labels=False, _size=None):
database = tilde_decode(request.url_vars["db_name"])
database = tilde_decode(request.url_vars["database"])
await self.check_permissions(
request,
[
@ -162,7 +162,7 @@ class DatabaseDownload(DataView):
name = "database_download"
async def get(self, request):
database = tilde_decode(request.url_vars["db_name"])
database = tilde_decode(request.url_vars["database"])
await self.check_permissions(
request,
[
@ -205,7 +205,7 @@ class QueryView(DataView):
named_parameters=None,
write=False,
):
database = tilde_decode(request.url_vars["db_name"])
database = tilde_decode(request.url_vars["database"])
params = {key: request.args.get(key) for key in request.args}
if "sql" in params:
params.pop("sql")

Wyświetl plik

@ -19,7 +19,7 @@ class IndexView(BaseView):
name = "index"
async def get(self, request):
as_format = request.url_vars["as_format"]
as_format = request.url_vars["format"]
await self.check_permission(request, "view-instance")
databases = []
for name, db in self.ds.databases.items():

Wyświetl plik

@ -15,7 +15,7 @@ class JsonDataView(BaseView):
self.needs_request = needs_request
async def get(self, request):
as_format = request.url_vars["as_format"]
as_format = request.url_vars["format"]
await self.check_permission(request, "view-instance")
if self.needs_request:
data = self.data_callback(request)

Wyświetl plik

@ -272,7 +272,7 @@ class TableView(RowTableShared):
name = "table"
async def post(self, request):
db_name = tilde_decode(request.url_vars["db_name"])
db_name = tilde_decode(request.url_vars["database"])
table = tilde_decode(request.url_vars["table"])
# Handle POST to a canned query
canned_query = await self.ds.get_canned_query(db_name, table, request.actor)
@ -327,7 +327,7 @@ class TableView(RowTableShared):
_next=None,
_size=None,
):
database = tilde_decode(request.url_vars["db_name"])
database = tilde_decode(request.url_vars["database"])
table = tilde_decode(request.url_vars["table"])
try:
db = self.ds.databases[database]
@ -938,7 +938,7 @@ class RowView(RowTableShared):
name = "row"
async def data(self, request, default_labels=False):
database = tilde_decode(request.url_vars["db_name"])
database = tilde_decode(request.url_vars["database"])
table = tilde_decode(request.url_vars["table"])
await self.check_permissions(
request,
@ -948,7 +948,7 @@ class RowView(RowTableShared):
"view-instance",
],
)
pk_values = urlsafe_components(request.url_vars["pk_path"])
pk_values = urlsafe_components(request.url_vars["pks"])
db = self.ds.databases[database]
sql, params, pks = await _sql_params_pks(db, table, pk_values)
results = await db.execute(sql, params, truncate=True)

Wyświetl plik

@ -12,26 +12,26 @@ def routes():
@pytest.mark.parametrize(
"path,expected_class,expected_matches",
(
("/", "IndexView", {"as_format": ""}),
("/foo", "DatabaseView", {"as_format": None, "db_name": "foo"}),
("/foo.csv", "DatabaseView", {"as_format": ".csv", "db_name": "foo"}),
("/foo.json", "DatabaseView", {"as_format": ".json", "db_name": "foo"}),
("/foo.humbug", "DatabaseView", {"as_format": None, "db_name": "foo.humbug"}),
("/foo/humbug", "TableView", {"db_name": "foo", "table": "humbug"}),
("/foo/humbug.json", "TableView", {"db_name": "foo", "table": "humbug"}),
("/foo/humbug.blah", "TableView", {"db_name": "foo", "table": "humbug"}),
("/", "IndexView", {"format": ""}),
("/foo", "DatabaseView", {"format": None, "database": "foo"}),
("/foo.csv", "DatabaseView", {"format": ".csv", "database": "foo"}),
("/foo.json", "DatabaseView", {"format": ".json", "database": "foo"}),
("/foo.humbug", "DatabaseView", {"format": None, "database": "foo.humbug"}),
("/foo/humbug", "TableView", {"database": "foo", "table": "humbug"}),
("/foo/humbug.json", "TableView", {"database": "foo", "table": "humbug"}),
("/foo/humbug.blah", "TableView", {"database": "foo", "table": "humbug"}),
(
"/foo/humbug/1",
"RowView",
{"as_format": None, "db_name": "foo", "pk_path": "1", "table": "humbug"},
{"format": None, "database": "foo", "pks": "1", "table": "humbug"},
),
(
"/foo/humbug/1.json",
"RowView",
{"as_format": ".json", "db_name": "foo", "pk_path": "1", "table": "humbug"},
{"format": ".json", "database": "foo", "pks": "1", "table": "humbug"},
),
("/-/metadata.json", "JsonDataView", {"as_format": ".json"}),
("/-/metadata", "JsonDataView", {"as_format": ""}),
("/-/metadata.json", "JsonDataView", {"format": ".json"}),
("/-/metadata", "JsonDataView", {"format": ""}),
),
)
def test_routes(routes, path, expected_class, expected_matches):