From a246f476b4fe490f5450836b22961bc607e6b4b0 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Thu, 7 Jun 2018 08:22:29 -0700 Subject: [PATCH] Moved JsonDataView into views/special,py --- datasette/app.py | 23 +---------------------- datasette/views/special.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 22 deletions(-) create mode 100644 datasette/views/special.py diff --git a/datasette/app.py b/datasette/app.py index 7a0f6b89..3ea68c86 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -25,6 +25,7 @@ from .views.base import ( ) from .views.database import DatabaseDownload, DatabaseView from .views.index import IndexView +from .views.special import JsonDataView from .views.table import RowView, TableView from . import hookspecs @@ -100,28 +101,6 @@ DEFAULT_CONFIG = { } -class JsonDataView(RenderMixin): - - def __init__(self, datasette, filename, data_callback): - self.ds = datasette - self.jinja_env = datasette.jinja_env - self.filename = filename - self.data_callback = data_callback - - async def get(self, request, as_json): - data = self.data_callback() - if as_json: - headers = {} - if self.ds.cors: - headers["Access-Control-Allow-Origin"] = "*" - return response.HTTPResponse( - json.dumps(data), content_type="application/json", headers=headers - ) - - else: - return self.render(["show_json.html"], filename=self.filename, data=data) - - async def favicon(request): return response.text("") diff --git a/datasette/views/special.py b/datasette/views/special.py new file mode 100644 index 00000000..986630fd --- /dev/null +++ b/datasette/views/special.py @@ -0,0 +1,30 @@ +import json +from sanic import response +from .base import RenderMixin + + +class JsonDataView(RenderMixin): + def __init__(self, datasette, filename, data_callback): + self.ds = datasette + self.jinja_env = datasette.jinja_env + self.filename = filename + self.data_callback = data_callback + + async def get(self, request, as_json): + data = self.data_callback() + if as_json: + headers = {} + if self.ds.cors: + headers["Access-Control-Allow-Origin"] = "*" + return response.HTTPResponse( + json.dumps(data), + content_type="application/json", + headers=headers + ) + + else: + return self.render( + ["show_json.html"], + filename=self.filename, + data=data + )