git commit -m "datasette --template-dir=mytemplates/" argument

You can now pass an additional argument specifying a directory to look for
custom templates in.

Datasette will fall back on the default templates if a template is not
found in that directory.

Refs #12, #153
sanic-07
Simon Willison 2017-11-30 08:05:01 -08:00
rodzic ffa77f62b4
commit 7ff51598c4
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: FBB38AFE227189DB
2 zmienionych plików z 10 dodań i 5 usunięć

Wyświetl plik

@ -771,7 +771,7 @@ class Datasette:
def __init__(
self, files, num_threads=3, cache_headers=True, page_size=100,
max_returned_rows=1000, sql_time_limit_ms=1000, cors=False,
inspect_data=None, metadata=None, sqlite_extensions=None):
inspect_data=None, metadata=None, sqlite_extensions=None, template_dir=None):
self.files = files
self.num_threads = num_threads
self.executor = futures.ThreadPoolExecutor(
@ -786,6 +786,7 @@ class Datasette:
self.metadata = metadata or {}
self.sqlite_functions = []
self.sqlite_extensions = sqlite_extensions or []
self.template_dir = template_dir
def asset_urls(self, key):
for url_or_dict in (self.metadata.get(key) or []):
@ -892,10 +893,12 @@ class Datasette:
def app(self):
app = Sanic(__name__)
template_paths = []
if self.template_dir:
template_paths.append(self.template_dir)
template_paths.append(str(app_root / 'datasette' / 'templates'))
self.jinja_env = Environment(
loader=FileSystemLoader([
str(app_root / 'datasette' / 'templates')
]),
loader=FileSystemLoader(template_paths),
autoescape=True,
)
self.jinja_env.filters['escape_css_string'] = escape_css_string

Wyświetl plik

@ -156,7 +156,8 @@ def package(files, tag, metadata, extra_options, branch, **extra_metadata):
)
@click.option('--inspect-file', help='Path to JSON file created using "datasette build"')
@click.option('-m', '--metadata', type=click.File(mode='r'), help='Path to JSON file containing license/source metadata')
def serve(files, host, port, debug, reload, cors, page_size, max_returned_rows, sql_time_limit_ms, sqlite_extensions, inspect_file, metadata):
@click.option('-t', '--template-dir', type=click.Path(exists=True, file_okay=False, dir_okay=True), help='Path to directory containing custom templates')
def serve(files, host, port, debug, reload, cors, page_size, max_returned_rows, sql_time_limit_ms, sqlite_extensions, inspect_file, metadata, template_dir):
"""Serve up specified SQLite database files with a web UI"""
if reload:
import hupper
@ -181,6 +182,7 @@ def serve(files, host, port, debug, reload, cors, page_size, max_returned_rows,
inspect_data=inspect_data,
metadata=metadata_data,
sqlite_extensions=sqlite_extensions,
template_dir=template_dir,
)
# Force initial hashing/table counting
ds.inspect()