kopia lustrzana https://github.com/simonw/datasette
rodzic
9e8c36793b
commit
afe9aa3ae0
|
@ -26,11 +26,13 @@
|
|||
{% block description_source_license %}{% include "_description_source_license.html" %}{% endblock %}
|
||||
|
||||
<form class="sql" action="/{{ database }}-{{ database_hash }}{% if canned_query %}/{{ canned_query }}{% endif %}" method="get">
|
||||
<h3>Custom SQL query{% if display_rows %} returning {% if truncated %}more than {% endif %}{{ "{:,}".format(display_rows|length) }} row{% if display_rows|length == 1 %}{% else %}s{% endif %}{% endif %}</h3>
|
||||
{% if editable and config.allow_sql %}
|
||||
<p><textarea name="sql">{% if query and query.sql %}{{ query.sql }}{% else %}select * from {{ tables[0].name|escape_sqlite }}{% endif %}</textarea></p>
|
||||
{% else %}
|
||||
<pre>{% if query %}{{ query.sql }}{% endif %}</pre>
|
||||
<h3>Custom SQL query{% if display_rows %} returning {% if truncated %}more than {% endif %}{{ "{:,}".format(display_rows|length) }} row{% if display_rows|length == 1 %}{% else %}s{% endif %}{% endif %} <span class="show-hide-sql">{% if hide_sql %}(<a href="{{ path_with_removed_args(request, {'_hide_sql': '1'}) }}">show</a>){% else %}(<a href="{{ path_with_added_args(request, {'_hide_sql': '1'}) }}">hide</a>){% endif %}</span></h3>
|
||||
{% if not hide_sql %}
|
||||
{% if editable and config.allow_sql %}
|
||||
<p><textarea name="sql">{% if query and query.sql %}{{ query.sql }}{% else %}select * from {{ tables[0].name|escape_sqlite }}{% endif %}</textarea></p>
|
||||
{% else %}
|
||||
<pre>{% if query %}{{ query.sql }}{% endif %}</pre>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if named_parameter_values %}
|
||||
<h3>Query parameters</h3>
|
||||
|
|
|
@ -23,6 +23,7 @@ from datasette.utils import (
|
|||
is_url,
|
||||
path_from_row_pks,
|
||||
path_with_added_args,
|
||||
path_with_removed_args,
|
||||
path_with_format,
|
||||
remove_infinites,
|
||||
resolve_table_and_format,
|
||||
|
@ -578,6 +579,10 @@ class BaseView(RenderMixin):
|
|||
"canned_query": canned_query,
|
||||
"metadata": metadata,
|
||||
"config": self.ds.config_dict(),
|
||||
"request": request,
|
||||
"path_with_added_args": path_with_added_args,
|
||||
"path_with_removed_args": path_with_removed_args,
|
||||
"hide_sql": "_hide_sql" in params,
|
||||
}
|
||||
|
||||
return {
|
||||
|
|
|
@ -824,3 +824,22 @@ def test_urlify_custom_queries(app_client):
|
|||
https://twitter.com/simonw
|
||||
</a>
|
||||
</td>''' == soup.find("td", {"class": "col-user_url"}).prettify().strip()
|
||||
|
||||
|
||||
def test_show_hide_sql_query(app_client):
|
||||
path = "/fixtures?" + urllib.parse.urlencode({
|
||||
"sql": "select ('https://twitter.com/' || 'simonw') as user_url;"
|
||||
})
|
||||
response = app_client.get(path)
|
||||
soup = Soup(response.body, "html.parser")
|
||||
span = soup.select(".show-hide-sql")[0]
|
||||
assert span.find("a")["href"].endswith("&_hide_sql=1")
|
||||
assert "(hide)" == span.getText()
|
||||
assert soup.find("textarea") is not None
|
||||
# Now follow the link to hide it
|
||||
response = app_client.get(span.find("a")["href"])
|
||||
soup = Soup(response.body, "html.parser")
|
||||
span = soup.select(".show-hide-sql")[0]
|
||||
assert not span.find("a")["href"].endswith("&_hide_sql=1")
|
||||
assert "(show)" == span.getText()
|
||||
assert soup.find("textarea") is None
|
||||
|
|
Ładowanie…
Reference in New Issue