mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Removed dependency on sanic-jinja2
I wasn't using any of the functionality it adds on top of raw Jinja2. Refs #12 and #153
This commit is contained in:
parent
8ab3a169d4
commit
ffa77f62b4
2 changed files with 19 additions and 17 deletions
|
|
@ -3,8 +3,7 @@ from sanic import response
|
||||||
from sanic.exceptions import NotFound
|
from sanic.exceptions import NotFound
|
||||||
from sanic.views import HTTPMethodView
|
from sanic.views import HTTPMethodView
|
||||||
from sanic.request import RequestParameters
|
from sanic.request import RequestParameters
|
||||||
from sanic_jinja2 import SanicJinja2
|
from jinja2 import Environment, FileSystemLoader
|
||||||
from jinja2 import FileSystemLoader
|
|
||||||
import re
|
import re
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
@ -43,13 +42,20 @@ HASH_BLOCK_SIZE = 1024 * 1024
|
||||||
connections = threading.local()
|
connections = threading.local()
|
||||||
|
|
||||||
|
|
||||||
class BaseView(HTTPMethodView):
|
class RenderMixin(HTTPMethodView):
|
||||||
|
def render(self, template, **context):
|
||||||
|
return response.html(
|
||||||
|
self.jinja_env.get_template(template).render(**context)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class BaseView(RenderMixin):
|
||||||
template = None
|
template = None
|
||||||
|
|
||||||
def __init__(self, datasette):
|
def __init__(self, datasette):
|
||||||
self.ds = datasette
|
self.ds = datasette
|
||||||
self.files = datasette.files
|
self.files = datasette.files
|
||||||
self.jinja = datasette.jinja
|
self.jinja_env = datasette.jinja_env
|
||||||
self.executor = datasette.executor
|
self.executor = datasette.executor
|
||||||
self.page_size = datasette.page_size
|
self.page_size = datasette.page_size
|
||||||
self.max_returned_rows = datasette.max_returned_rows
|
self.max_returned_rows = datasette.max_returned_rows
|
||||||
|
|
@ -239,9 +245,8 @@ class BaseView(HTTPMethodView):
|
||||||
'datasette_version': __version__,
|
'datasette_version': __version__,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r = self.jinja.render(
|
r = self.render(
|
||||||
template,
|
template,
|
||||||
request,
|
|
||||||
**context,
|
**context,
|
||||||
)
|
)
|
||||||
r.status = status_code
|
r.status = status_code
|
||||||
|
|
@ -253,11 +258,11 @@ class BaseView(HTTPMethodView):
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
class IndexView(HTTPMethodView):
|
class IndexView(RenderMixin):
|
||||||
def __init__(self, datasette):
|
def __init__(self, datasette):
|
||||||
self.ds = datasette
|
self.ds = datasette
|
||||||
self.files = datasette.files
|
self.files = datasette.files
|
||||||
self.jinja = datasette.jinja
|
self.jinja_env = datasette.jinja_env
|
||||||
self.executor = datasette.executor
|
self.executor = datasette.executor
|
||||||
|
|
||||||
async def get(self, request, as_json):
|
async def get(self, request, as_json):
|
||||||
|
|
@ -294,9 +299,8 @@ class IndexView(HTTPMethodView):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return self.jinja.render(
|
return self.render(
|
||||||
'index.html',
|
'index.html',
|
||||||
request,
|
|
||||||
databases=databases,
|
databases=databases,
|
||||||
metadata=self.ds.metadata,
|
metadata=self.ds.metadata,
|
||||||
datasette_version=__version__,
|
datasette_version=__version__,
|
||||||
|
|
@ -888,17 +892,16 @@ class Datasette:
|
||||||
|
|
||||||
def app(self):
|
def app(self):
|
||||||
app = Sanic(__name__)
|
app = Sanic(__name__)
|
||||||
self.jinja = SanicJinja2(
|
self.jinja_env = Environment(
|
||||||
app,
|
|
||||||
loader=FileSystemLoader([
|
loader=FileSystemLoader([
|
||||||
str(app_root / 'datasette' / 'templates')
|
str(app_root / 'datasette' / 'templates')
|
||||||
]),
|
]),
|
||||||
autoescape=True,
|
autoescape=True,
|
||||||
)
|
)
|
||||||
self.jinja.add_env('escape_css_string', escape_css_string, 'filters')
|
self.jinja_env.filters['escape_css_string'] = escape_css_string
|
||||||
self.jinja.add_env('quote_plus', lambda u: urllib.parse.quote_plus(u), 'filters')
|
self.jinja_env.filters['quote_plus'] = lambda u: urllib.parse.quote_plus(u)
|
||||||
self.jinja.add_env('escape_table_name', escape_sqlite_table_name, 'filters')
|
self.jinja_env.filters['escape_table_name'] = escape_sqlite_table_name
|
||||||
self.jinja.add_env('to_css_class', to_css_class, 'filters')
|
self.jinja_env.filters['to_css_class'] = to_css_class
|
||||||
app.add_route(IndexView.as_view(self), '/<as_json:(.jsono?)?$>')
|
app.add_route(IndexView.as_view(self), '/<as_json:(.jsono?)?$>')
|
||||||
# TODO: /favicon.ico and /-/static/ deserve far-future cache expires
|
# TODO: /favicon.ico and /-/static/ deserve far-future cache expires
|
||||||
app.add_route(favicon, '/favicon.ico')
|
app.add_route(favicon, '/favicon.ico')
|
||||||
|
|
|
||||||
1
setup.py
1
setup.py
|
|
@ -16,7 +16,6 @@ setup(
|
||||||
'click-default-group==1.2',
|
'click-default-group==1.2',
|
||||||
'Sanic==0.6.0',
|
'Sanic==0.6.0',
|
||||||
'Jinja2==2.10',
|
'Jinja2==2.10',
|
||||||
'sanic-jinja2==0.5.5',
|
|
||||||
'hupper==1.0',
|
'hupper==1.0',
|
||||||
],
|
],
|
||||||
entry_points='''
|
entry_points='''
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue