kopia lustrzana https://github.com/simonw/datasette
rodzic
908fc3999e
commit
12cec411ca
|
@ -10,12 +10,17 @@ class DatabaseView(DataView):
|
||||||
name = "database"
|
name = "database"
|
||||||
|
|
||||||
async def data(self, request, database, hash, default_labels=False, _size=None):
|
async def data(self, request, database, hash, default_labels=False, _size=None):
|
||||||
|
metadata = (self.ds.metadata("databases") or {}).get(database, {})
|
||||||
|
self.ds.update_with_inherited_metadata(metadata)
|
||||||
|
|
||||||
if request.args.get("sql"):
|
if request.args.get("sql"):
|
||||||
if not self.ds.config("allow_sql"):
|
if not self.ds.config("allow_sql"):
|
||||||
raise DatasetteError("sql= is not allowed", status=400)
|
raise DatasetteError("sql= is not allowed", status=400)
|
||||||
sql = request.raw_args.pop("sql")
|
sql = request.raw_args.pop("sql")
|
||||||
validate_sql_select(sql)
|
validate_sql_select(sql)
|
||||||
return await self.custom_sql(request, database, hash, sql, _size=_size)
|
return await self.custom_sql(
|
||||||
|
request, database, hash, sql, _size=_size, metadata=metadata
|
||||||
|
)
|
||||||
|
|
||||||
db = self.ds.databases[database]
|
db = self.ds.databases[database]
|
||||||
|
|
||||||
|
@ -24,9 +29,6 @@ class DatabaseView(DataView):
|
||||||
hidden_table_names = set(await db.hidden_table_names())
|
hidden_table_names = set(await db.hidden_table_names())
|
||||||
all_foreign_keys = await db.get_all_foreign_keys()
|
all_foreign_keys = await db.get_all_foreign_keys()
|
||||||
|
|
||||||
metadata = (self.ds.metadata("databases") or {}).get(database, {})
|
|
||||||
self.ds.update_with_inherited_metadata(metadata)
|
|
||||||
|
|
||||||
tables = []
|
tables = []
|
||||||
for table in table_counts:
|
for table in table_counts:
|
||||||
table_columns = await db.table_columns(table)
|
table_columns = await db.table_columns(table)
|
||||||
|
|
|
@ -737,6 +737,18 @@ def test_database_metadata(app_client):
|
||||||
assert_footer_links(soup)
|
assert_footer_links(soup)
|
||||||
|
|
||||||
|
|
||||||
|
def test_database_metadata_with_custom_sql(app_client):
|
||||||
|
response = app_client.get("/fixtures?sql=select+*+from+simple_primary_key")
|
||||||
|
assert response.status == 200
|
||||||
|
soup = Soup(response.body, "html.parser")
|
||||||
|
# Page title should be the default
|
||||||
|
assert "fixtures" == soup.find("h1").text
|
||||||
|
# Description should be custom
|
||||||
|
assert "Custom SQL query returning" in soup.find("h3").text
|
||||||
|
# The source/license should be inherited
|
||||||
|
assert_footer_links(soup)
|
||||||
|
|
||||||
|
|
||||||
def test_table_metadata(app_client):
|
def test_table_metadata(app_client):
|
||||||
response = app_client.get("/fixtures/simple_primary_key")
|
response = app_client.get("/fixtures/simple_primary_key")
|
||||||
assert response.status == 200
|
assert response.status == 200
|
||||||
|
|
Ładowanie…
Reference in New Issue