kopia lustrzana https://github.com/simonw/datasette
Fix CSV export hidden form fields, closes #393
rodzic
8b8ae55e7c
commit
996e8822d2
|
@ -148,10 +148,8 @@
|
||||||
{% if expandable_columns %}<label><input type="checkbox" name="_labels" checked> expand labels</label>{% endif %}
|
{% if expandable_columns %}<label><input type="checkbox" name="_labels" checked> expand labels</label>{% endif %}
|
||||||
{% if next_url and config.allow_csv_stream %}<label><input type="checkbox" name="_stream"> stream all rows</label>{% endif %}
|
{% if next_url and config.allow_csv_stream %}<label><input type="checkbox" name="_stream"> stream all rows</label>{% endif %}
|
||||||
<input type="submit" value="Export CSV">
|
<input type="submit" value="Export CSV">
|
||||||
{% for key, value in url_csv_args.items() %}
|
{% for key, value in url_csv_hidden_args %}
|
||||||
{% if key != "_labels" %}
|
<input type="hidden" name="{{ key }}" value="{{ value }}">
|
||||||
<input type="hidden" name="{{ key }}" value="{{ value }}">
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -464,7 +464,11 @@ class BaseView(RenderMixin):
|
||||||
}),
|
}),
|
||||||
"url_csv": url_csv,
|
"url_csv": url_csv,
|
||||||
"url_csv_path": url_csv_path,
|
"url_csv_path": url_csv_path,
|
||||||
"url_csv_args": url_csv_args,
|
"url_csv_hidden_args": [
|
||||||
|
(key, value)
|
||||||
|
for key, value in urllib.parse.parse_qsl(request.query_string)
|
||||||
|
if key not in ("_labels", "_facet", "_size")
|
||||||
|
] + [("_size", "max")],
|
||||||
"datasette_version": __version__,
|
"datasette_version": __version__,
|
||||||
"config": self.ds.config_dict(),
|
"config": self.ds.config_dict(),
|
||||||
}
|
}
|
||||||
|
|
|
@ -401,7 +401,7 @@ def test_table_html_simple_primary_key(app_client):
|
||||||
|
|
||||||
|
|
||||||
def test_table_csv_json_export_interface(app_client):
|
def test_table_csv_json_export_interface(app_client):
|
||||||
response = app_client.get('/fixtures/simple_primary_key')
|
response = app_client.get('/fixtures/simple_primary_key?id__gt=2')
|
||||||
assert response.status == 200
|
assert response.status == 200
|
||||||
# The links at the top of the page
|
# The links at the top of the page
|
||||||
links = Soup(response.body, "html.parser").find("p", {
|
links = Soup(response.body, "html.parser").find("p", {
|
||||||
|
@ -409,8 +409,8 @@ def test_table_csv_json_export_interface(app_client):
|
||||||
}).findAll("a")
|
}).findAll("a")
|
||||||
actual = [l["href"].split("/")[-1] for l in links]
|
actual = [l["href"].split("/")[-1] for l in links]
|
||||||
expected = [
|
expected = [
|
||||||
"simple_primary_key.json",
|
"simple_primary_key.json?id__gt=2",
|
||||||
"simple_primary_key.csv?_size=max",
|
"simple_primary_key.csv?id__gt=2&_size=max",
|
||||||
"#export"
|
"#export"
|
||||||
]
|
]
|
||||||
assert expected == actual
|
assert expected == actual
|
||||||
|
@ -420,9 +420,9 @@ def test_table_csv_json_export_interface(app_client):
|
||||||
})
|
})
|
||||||
json_links = [a["href"].split("/")[-1] for a in div.find("p").findAll("a")]
|
json_links = [a["href"].split("/")[-1] for a in div.find("p").findAll("a")]
|
||||||
assert [
|
assert [
|
||||||
"simple_primary_key.json",
|
"simple_primary_key.json?id__gt=2",
|
||||||
"simple_primary_key.json?_shape=array",
|
"simple_primary_key.json?id__gt=2&_shape=array",
|
||||||
"simple_primary_key.json?_shape=object"
|
"simple_primary_key.json?id__gt=2&_shape=object"
|
||||||
] == json_links
|
] == json_links
|
||||||
# And the CSV form
|
# And the CSV form
|
||||||
form = div.find("form")
|
form = div.find("form")
|
||||||
|
@ -431,6 +431,7 @@ def test_table_csv_json_export_interface(app_client):
|
||||||
assert [
|
assert [
|
||||||
'<input name="_dl" type="checkbox"/>',
|
'<input name="_dl" type="checkbox"/>',
|
||||||
'<input type="submit" value="Export CSV"/>',
|
'<input type="submit" value="Export CSV"/>',
|
||||||
|
'<input name="id__gt" type="hidden" value="2"/>',
|
||||||
'<input name="_size" type="hidden" value="max"/>'
|
'<input name="_size" type="hidden" value="max"/>'
|
||||||
] == inputs
|
] == inputs
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue