Implemented database summary on index page

Closes #41
This commit is contained in:
Simon Willison 2017-10-26 21:05:13 -07:00
commit 2a9799bae6
4 changed files with 24 additions and 5 deletions

17
app.py
View file

@ -153,7 +153,22 @@ class BaseView(HTTPMethodView):
@app.route('/')
async def index(request, sql=None):
databases = ensure_build_metadata(True)
databases = []
for key, info in ensure_build_metadata(True).items():
database = {
'name': key,
'hash': info['hash'],
'path': '{}-{}'.format(key, info['hash'][:7]),
'tables_truncated': sorted(
info['tables'].items(),
key=lambda p: p[1],
reverse=True
)[:5],
'tables_count': len(info['tables'].items()),
'tables_more': len(info['tables'].items()) > 5,
'total_rows': sum(info['tables'].values()),
}
databases.append(database)
return jinja.render(
'index.html',
request,

View file

@ -5,6 +5,8 @@
{% block content %}
<h1>{{ database }}</h1>
<p><a href="/{{ database }}-{{ database_hash }}.db">download {{ database }}.db</a></p>
<style>
td {
vertical-align: top;

View file

@ -3,9 +3,11 @@
{% 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>
<h1>Database{% if databases|length != 1 %}s{% endif %}</h1>
{% for database in databases %}
<h2><a href="{{ database.path }}">{{ database.name }}</a></h2>
<p>{{ "{:,}".format(database.total_rows) }} rows in {{ database.tables_count }} table{% if database.tables_count != 1 %}s{% endif %}</p>
<p>{% for table, count in database.tables_truncated %}<a href="{{ database.path }}/{{ table }}" title="{{ count }} rows">{{ table }}</a>{% if not loop.last %}, {% endif %}{% endfor %}{% if database.tables_more %}, <a href="{{ database.path }}">...</a>{% endif %}</p>
{% endfor %}
{% endblock %}

View file

@ -5,7 +5,7 @@
{% block content %}
<h1><a href="/{{ database }}-{{ database_hash }}">{{ database }}</a></h1>
<h2>{{ table }}{% if total_rows != None %} ({{ total_rows }} total row{% if total_rows == 1 %}{% else %}s{% endif %} in this table){% endif %}</h2>
<h2>{{ table }}{% if total_rows != None %} ({{ "{:,}".format(total_rows) }} total row{% if total_rows == 1 %}{% else %}s{% endif %} in this table){% endif %}</h2>
<style>
td {