From 0f3b35d4e8a2e3711c84f4c608cfc15b0c11b0f5 Mon Sep 17 00:00:00 2001
From: Simon Willison
Date: Sun, 30 Dec 2018 21:00:54 -0800
Subject: [PATCH] Experimental new table / encoding schema
See https://github.com/django/asgiref/issues/51#issuecomment-450603464
---
datasette/app.py | 2 ++
datasette/templates/database.html | 2 +-
datasette/templates/index.html | 2 +-
datasette/templates/row.html | 4 ++--
datasette/templates/table.html | 2 +-
datasette/utils.py | 17 +++++++++++++++++
datasette/views/base.py | 12 +++++++-----
datasette/views/table.py | 5 +++--
tests/test_api.py | 4 ++--
tests/test_html.py | 8 ++++----
tests/test_utils.py | 13 +++++++++++++
11 files changed, 53 insertions(+), 18 deletions(-)
diff --git a/datasette/app.py b/datasette/app.py
index cdfcb11d..c73c0fe0 100644
--- a/datasette/app.py
+++ b/datasette/app.py
@@ -27,6 +27,7 @@ from .views.table import RowView, TableView
from .utils import (
InterruptedError,
Results,
+ encode_table_name,
escape_css_string,
escape_sqlite,
get_plugins,
@@ -465,6 +466,7 @@ class Datasette:
self.jinja_env = Environment(loader=template_loader, autoescape=True)
self.jinja_env.filters["escape_css_string"] = escape_css_string
self.jinja_env.filters["quote_plus"] = lambda u: urllib.parse.quote_plus(u)
+ self.jinja_env.filters["encode_table_name"] = encode_table_name
self.jinja_env.filters["escape_sqlite"] = escape_sqlite
self.jinja_env.filters["to_css_class"] = to_css_class
pm.hook.prepare_jinja2_environment(env=self.jinja_env)
diff --git a/datasette/templates/database.html b/datasette/templates/database.html
index 05acff84..9c581656 100644
--- a/datasette/templates/database.html
+++ b/datasette/templates/database.html
@@ -27,7 +27,7 @@
{% for table in tables %}
{% if show_hidden or not table.hidden %}
-
{{ table.name }}{% if table.hidden %} (hidden){% endif %}
+
{{ table.name }}{% if table.hidden %} (hidden){% endif %}
{% for column in table.columns[:9] %}{{ column }}{% if not loop.last %}, {% endif %}{% endfor %}{% if table.columns|length > 9 %}...{% endif %}
{{ "{:,}".format(table.count) }} row{% if table.count == 1 %}{% else %}s{% endif %}
diff --git a/datasette/templates/index.html b/datasette/templates/index.html
index cb52740a..a32bf765 100644
--- a/datasette/templates/index.html
+++ b/datasette/templates/index.html
@@ -21,7 +21,7 @@
{{ "{:,}".format(database.views_count) }} view{% if database.views_count != 1 %}s{% endif %}
{% endif %}
- {% for table in database.tables_truncated %}{{ table.name }}{% if not loop.last %}, {% endif %}{% endfor %}{% if database.tables_more %}, ...{% endif %}
+ {% for table in database.tables_truncated %}{{ table.name }}{% if not loop.last %}, {% endif %}{% endfor %}{% if database.tables_more %}, ...{% endif %}
{% endfor %}
{% endblock %}
diff --git a/datasette/templates/row.html b/datasette/templates/row.html
index 4ef0b758..df81899f 100644
--- a/datasette/templates/row.html
+++ b/datasette/templates/row.html
@@ -16,7 +16,7 @@
{% block body_class %}row db-{{ database|to_css_class }} table-{{ table|to_css_class }}{% endblock %}
{% block content %}
-
+
{{ table }}: {{ ', '.join(primary_key_values) }}
@@ -31,7 +31,7 @@