kopia lustrzana https://github.com/simonw/datasette
Directory configuration mode supports metadata.yaml, closes #747
rodzic
d18086ae01
commit
1d91ab71d4
|
@ -34,6 +34,7 @@ from .utils import (
|
||||||
escape_sqlite,
|
escape_sqlite,
|
||||||
format_bytes,
|
format_bytes,
|
||||||
module_from_path,
|
module_from_path,
|
||||||
|
parse_metadata,
|
||||||
sqlite3,
|
sqlite3,
|
||||||
to_css_class,
|
to_css_class,
|
||||||
)
|
)
|
||||||
|
@ -203,8 +204,16 @@ class Datasette:
|
||||||
self.add_database(db.name, db)
|
self.add_database(db.name, db)
|
||||||
self.cache_headers = cache_headers
|
self.cache_headers = cache_headers
|
||||||
self.cors = cors
|
self.cors = cors
|
||||||
if config_dir and (config_dir / "metadata.json").exists() and not metadata:
|
metadata_files = []
|
||||||
metadata = json.load((config_dir / "metadata.json").open())
|
if config_dir:
|
||||||
|
metadata_files = [
|
||||||
|
config_dir / filename
|
||||||
|
for filename in ("metadata.json", "metadata.yaml", "metadata.yml")
|
||||||
|
if (config_dir / filename).exists()
|
||||||
|
]
|
||||||
|
if config_dir and metadata_files and not metadata:
|
||||||
|
with metadata_files[0].open() as fp:
|
||||||
|
metadata = parse_metadata(fp.read())
|
||||||
self._metadata = metadata or {}
|
self._metadata = metadata or {}
|
||||||
self.sqlite_functions = []
|
self.sqlite_functions = []
|
||||||
self.sqlite_extensions = sqlite_extensions or []
|
self.sqlite_extensions = sqlite_extensions or []
|
||||||
|
|
|
@ -130,3 +130,15 @@ def test_databases(config_dir_client):
|
||||||
assert databases[0]["is_mutable"]
|
assert databases[0]["is_mutable"]
|
||||||
assert "immutable" == databases[1]["name"]
|
assert "immutable" == databases[1]["name"]
|
||||||
assert not databases[1]["is_mutable"]
|
assert not databases[1]["is_mutable"]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("filename", ("metadata.yml", "metadata.yaml"))
|
||||||
|
def test_metadata_yaml(tmp_path_factory, filename):
|
||||||
|
config_dir = tmp_path_factory.mktemp("yaml-config-dir")
|
||||||
|
(config_dir / filename).write_text("title: Title from metadata", "utf-8")
|
||||||
|
ds = Datasette([], config_dir=config_dir)
|
||||||
|
client = TestClient(ds.app())
|
||||||
|
client.ds = ds
|
||||||
|
response = client.get("/-/metadata.json")
|
||||||
|
assert 200 == response.status
|
||||||
|
assert {"title": "Title from metadata"} == json.loads(response.text)
|
||||||
|
|
Ładowanie…
Reference in New Issue