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 next_url and config.allow_csv_stream %}<label><input type="checkbox" name="_stream"> stream all rows</label>{% endif %}
|
||||
<input type="submit" value="Export CSV">
|
||||
{% for key, value in url_csv_args.items() %}
|
||||
{% if key != "_labels" %}
|
||||
<input type="hidden" name="{{ key }}" value="{{ value }}">
|
||||
{% endif %}
|
||||
{% for key, value in url_csv_hidden_args %}
|
||||
<input type="hidden" name="{{ key }}" value="{{ value }}">
|
||||
{% endfor %}
|
||||
</p>
|
||||
</form>
|
||||
|
|
|
@ -464,7 +464,11 @@ class BaseView(RenderMixin):
|
|||
}),
|
||||
"url_csv": url_csv,
|
||||
"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__,
|
||||
"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):
|
||||
response = app_client.get('/fixtures/simple_primary_key')
|
||||
response = app_client.get('/fixtures/simple_primary_key?id__gt=2')
|
||||
assert response.status == 200
|
||||
# The links at the top of the page
|
||||
links = Soup(response.body, "html.parser").find("p", {
|
||||
|
@ -409,8 +409,8 @@ def test_table_csv_json_export_interface(app_client):
|
|||
}).findAll("a")
|
||||
actual = [l["href"].split("/")[-1] for l in links]
|
||||
expected = [
|
||||
"simple_primary_key.json",
|
||||
"simple_primary_key.csv?_size=max",
|
||||
"simple_primary_key.json?id__gt=2",
|
||||
"simple_primary_key.csv?id__gt=2&_size=max",
|
||||
"#export"
|
||||
]
|
||||
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")]
|
||||
assert [
|
||||
"simple_primary_key.json",
|
||||
"simple_primary_key.json?_shape=array",
|
||||
"simple_primary_key.json?_shape=object"
|
||||
"simple_primary_key.json?id__gt=2",
|
||||
"simple_primary_key.json?id__gt=2&_shape=array",
|
||||
"simple_primary_key.json?id__gt=2&_shape=object"
|
||||
] == json_links
|
||||
# And the CSV form
|
||||
form = div.find("form")
|
||||
|
@ -431,6 +431,7 @@ def test_table_csv_json_export_interface(app_client):
|
|||
assert [
|
||||
'<input name="_dl" type="checkbox"/>',
|
||||
'<input type="submit" value="Export CSV"/>',
|
||||
'<input name="id__gt" type="hidden" value="2"/>',
|
||||
'<input name="_size" type="hidden" value="max"/>'
|
||||
] == inputs
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue