From 425b4717381db2b90316d87785e84210093c8d53 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sat, 15 Jun 2019 12:41:34 -0700 Subject: [PATCH] Refactored view class hierarchy, refs #272 See https://github.com/simonw/datasette/issues/272#issuecomment-502393107 --- datasette/views/base.py | 4 ++-- datasette/views/database.py | 6 +++--- datasette/views/index.py | 4 ++-- datasette/views/special.py | 4 ++-- datasette/views/table.py | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/datasette/views/base.py b/datasette/views/base.py index b8863ff3..9db8cc76 100644 --- a/datasette/views/base.py +++ b/datasette/views/base.py @@ -49,7 +49,7 @@ class DatasetteError(Exception): self.messagge_is_html = messagge_is_html -class RenderMixin(HTTPMethodView): +class BaseView(HTTPMethodView): def _asset_urls(self, key, template, context): # Flatten list-of-lists from plugins: seen_urls = set() @@ -128,7 +128,7 @@ class RenderMixin(HTTPMethodView): ) -class BaseView(RenderMixin): +class DataView(BaseView): name = "" re_named_parameter = re.compile(":([a-zA-Z0-9_]+)") diff --git a/datasette/views/database.py b/datasette/views/database.py index 859a271f..a5b606f1 100644 --- a/datasette/views/database.py +++ b/datasette/views/database.py @@ -4,10 +4,10 @@ from sanic import response from datasette.utils import to_css_class, validate_sql_select -from .base import BaseView, DatasetteError +from .base import DataView, DatasetteError -class DatabaseView(BaseView): +class DatabaseView(DataView): name = "database" async def data(self, request, database, hash, default_labels=False, _size=None): @@ -65,7 +65,7 @@ class DatabaseView(BaseView): ) -class DatabaseDownload(BaseView): +class DatabaseDownload(DataView): name = "database_download" async def view_get(self, request, database, hash, correct_hash_present, **kwargs): diff --git a/datasette/views/index.py b/datasette/views/index.py index 30c77b41..c9d15c36 100644 --- a/datasette/views/index.py +++ b/datasette/views/index.py @@ -6,7 +6,7 @@ from sanic import response from datasette.utils import CustomJSONEncoder from datasette.version import __version__ -from .base import RenderMixin +from .base import BaseView # Truncate table list on homepage at: @@ -16,7 +16,7 @@ TRUNCATE_AT = 5 COUNT_TABLE_LIMIT = 30 -class IndexView(RenderMixin): +class IndexView(BaseView): name = "index" def __init__(self, datasette): diff --git a/datasette/views/special.py b/datasette/views/special.py index b93a330b..91b577fc 100644 --- a/datasette/views/special.py +++ b/datasette/views/special.py @@ -1,9 +1,9 @@ import json from sanic import response -from .base import RenderMixin +from .base import BaseView -class JsonDataView(RenderMixin): +class JsonDataView(BaseView): name = "json_data" def __init__(self, datasette, filename, data_callback): diff --git a/datasette/views/table.py b/datasette/views/table.py index 04100dc6..14b8743a 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -25,7 +25,7 @@ from datasette.utils import ( value_as_boolean, ) from datasette.filters import Filters -from .base import BaseView, DatasetteError, ureg +from .base import DataView, DatasetteError, ureg LINK_WITH_LABEL = ( '{label} {id}' @@ -33,7 +33,7 @@ LINK_WITH_LABEL = ( LINK_WITH_VALUE = '{id}' -class RowTableShared(BaseView): +class RowTableShared(DataView): async def sortable_columns_for_table(self, database, table, use_rowid): db = self.ds.databases[database] table_metadata = self.ds.table_metadata(database, table)