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"
|
||||
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(
|
||||
await datasette.render_template(
|
||||
template,
|
||||
|
|
@ -513,7 +528,7 @@ async def query_view(
|
|||
database=database,
|
||||
query={
|
||||
"sql": sql,
|
||||
# TODO: Params?
|
||||
"params": params,
|
||||
},
|
||||
canned_query=None,
|
||||
private=private,
|
||||
|
|
@ -526,7 +541,7 @@ async def query_view(
|
|||
editable=True, # TODO
|
||||
allow_execute_sql=allow_execute_sql,
|
||||
tables=await get_tables(datasette, request, db),
|
||||
named_parameter_values={}, # TODO
|
||||
named_parameter_values=named_parameter_values,
|
||||
edit_sql_url="todo",
|
||||
display_rows=await display_rows(
|
||||
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
|
||||
|
||||
|
||||
@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
|
||||
async def test_row_html_simple_primary_key(ds_client):
|
||||
response = await ds_client.get("/fixtures/simple_primary_key/1")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue