mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Brought back parameter fields, closes #2132
This commit is contained in:
parent
1377a290cd
commit
cd57b0f712
2 changed files with 33 additions and 2 deletions
|
|
@ -506,6 +506,21 @@ async def query_view(
|
||||||
show_hide_text = "hide"
|
show_hide_text = "hide"
|
||||||
hide_sql = show_hide_text == "show"
|
hide_sql = show_hide_text == "show"
|
||||||
|
|
||||||
|
# Extract any :named parameters
|
||||||
|
named_parameters = await derive_named_parameters(
|
||||||
|
datasette.get_database(database), sql
|
||||||
|
)
|
||||||
|
named_parameter_values = {
|
||||||
|
named_parameter: params.get(named_parameter) or ""
|
||||||
|
for named_parameter in named_parameters
|
||||||
|
if not named_parameter.startswith("_")
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set to blank string if missing from params
|
||||||
|
for named_parameter in named_parameters:
|
||||||
|
if named_parameter not in params and not named_parameter.startswith("_"):
|
||||||
|
params[named_parameter] = ""
|
||||||
|
|
||||||
r = Response.html(
|
r = Response.html(
|
||||||
await datasette.render_template(
|
await datasette.render_template(
|
||||||
template,
|
template,
|
||||||
|
|
@ -513,7 +528,7 @@ async def query_view(
|
||||||
database=database,
|
database=database,
|
||||||
query={
|
query={
|
||||||
"sql": sql,
|
"sql": sql,
|
||||||
# TODO: Params?
|
"params": params,
|
||||||
},
|
},
|
||||||
canned_query=None,
|
canned_query=None,
|
||||||
private=private,
|
private=private,
|
||||||
|
|
@ -526,7 +541,7 @@ async def query_view(
|
||||||
editable=True, # TODO
|
editable=True, # TODO
|
||||||
allow_execute_sql=allow_execute_sql,
|
allow_execute_sql=allow_execute_sql,
|
||||||
tables=await get_tables(datasette, request, db),
|
tables=await get_tables(datasette, request, db),
|
||||||
named_parameter_values={}, # TODO
|
named_parameter_values=named_parameter_values,
|
||||||
edit_sql_url="todo",
|
edit_sql_url="todo",
|
||||||
display_rows=await display_rows(
|
display_rows=await display_rows(
|
||||||
datasette, database, request, rows, columns
|
datasette, database, request, rows, columns
|
||||||
|
|
|
||||||
|
|
@ -295,6 +295,22 @@ async def test_query_json_csv_export_links(ds_client):
|
||||||
assert '<a href="/fixtures.csv?sql=select+1&_size=max">CSV</a>' in response.text
|
assert '<a href="/fixtures.csv?sql=select+1&_size=max">CSV</a>' in response.text
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_query_parameter_form_fields(ds_client):
|
||||||
|
response = await ds_client.get("/fixtures?sql=select+:name")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert (
|
||||||
|
'<label for="qp1">name</label> <input type="text" id="qp1" name="name" value="">'
|
||||||
|
in response.text
|
||||||
|
)
|
||||||
|
response2 = await ds_client.get("/fixtures?sql=select+:name&name=hello")
|
||||||
|
assert response2.status_code == 200
|
||||||
|
assert (
|
||||||
|
'<label for="qp1">name</label> <input type="text" id="qp1" name="name" value="hello">'
|
||||||
|
in response2.text
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_row_html_simple_primary_key(ds_client):
|
async def test_row_html_simple_primary_key(ds_client):
|
||||||
response = await ds_client.get("/fixtures/simple_primary_key/1")
|
response = await ds_client.get("/fixtures/simple_primary_key/1")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue