kopia lustrzana https://github.com/simonw/datasette
Implemented template inheritance and brought back errors
rodzic
0fa1772697
commit
b20d7119e4
22
app.py
22
app.py
|
@ -86,7 +86,13 @@ class BaseView(HTTPMethodView):
|
|||
as_json = kwargs.pop('as_json')
|
||||
except KeyError:
|
||||
as_json = False
|
||||
data = self.data(request, name, hash, **kwargs)
|
||||
try:
|
||||
data = self.data(request, name, hash, **kwargs)
|
||||
except sqlite3.OperationalError as e:
|
||||
data = {
|
||||
'ok': False,
|
||||
'error': str(e),
|
||||
}
|
||||
if as_json:
|
||||
r = response.json(data)
|
||||
r.headers['Access-Control-Allow-Origin'] = '*'
|
||||
|
@ -103,21 +109,7 @@ class BaseView(HTTPMethodView):
|
|||
return r
|
||||
|
||||
|
||||
def sqlerrors(fn):
|
||||
@wraps(fn)
|
||||
async def inner(*args, **kwargs):
|
||||
try:
|
||||
return await fn(*args, **kwargs)
|
||||
except sqlite3.OperationalError as e:
|
||||
return response.json({
|
||||
'ok': False,
|
||||
'error': str(e),
|
||||
})
|
||||
return inner
|
||||
|
||||
|
||||
@app.route('/')
|
||||
@sqlerrors
|
||||
async def index(request, sql=None):
|
||||
databases = ensure_build_metadata(True)
|
||||
return jinja.render(
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
{% block extra_head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
{% if error %}
|
||||
<div style="padding: 1em; margin: 1em; border: 3px solid red;">{{ error }}</div>
|
||||
{% endif %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
|
@ -1,3 +1,8 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ database }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ database }}</h1>
|
||||
|
||||
<style>
|
||||
|
@ -25,3 +30,4 @@ td {
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,4 +1,11 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Databases{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Database{% if databases.keys()|length != 1 %}s{% endif %}</h1>
|
||||
{% for name, info in databases.items() %}
|
||||
<p><a href="{{ name}}-{{ info.hash|truncate(7, end='') }}">{{ name }}</a></p>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
|
@ -1,3 +1,8 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ database }}: {{ table }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1><a href="/{{ database }}-{{ database_hash }}">{{ database }}</a></h1>
|
||||
|
||||
<h2>{{ table }}</h2>
|
||||
|
@ -22,3 +27,4 @@ td {
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
|
Ładowanie…
Reference in New Issue