Implemented inspect-data for config dirs, refs #731

This commit is contained in:
Simon Willison 2020-04-27 09:22:05 -07:00
commit 0d8fa53fab
2 changed files with 16 additions and 9 deletions

View file

@ -169,18 +169,27 @@ class Datasette:
assert config_dir is None or isinstance(
config_dir, Path
), "config_dir= should be a pathlib.Path"
# TODO: Use 'inspect-data.json' to decide on immutables
immutables = immutables or []
self.files = tuple(files) + tuple(immutables)
self.files = tuple(files) + tuple(immutables or [])
if config_dir:
self.files += tuple([str(p) for p in config_dir.glob("*.db")])
self.immutables = set(immutables)
if (
config_dir
and (config_dir / "inspect-data.json").exists()
and not inspect_data
):
inspect_data = json.load((config_dir / "inspect-data.json").open())
if immutables is None:
immutable_filenames = [i["file"] for i in inspect_data.values()]
immutables = [
f for f in self.files if Path(f).name in immutable_filenames
]
self.inspect_data = inspect_data
self.immutables = set(immutables or [])
if not self.files:
self.files = [MEMORY]
elif memory:
self.files = (MEMORY,) + self.files
self.databases = collections.OrderedDict()
self.inspect_data = inspect_data
for file in self.files:
path = file
is_memory = False

View file

@ -98,9 +98,7 @@ def test_config(config_dir_client):
def test_plugins(config_dir_client):
response = config_dir_client.get("/-/plugins.json")
assert 200 == response.status
assert [
{"name": "hooray.py", "static": False, "templates": False, "version": None}
] == json.loads(response.text)
assert "hooray.py" in {p["name"] for p in json.loads(response.text)}
def test_templates_and_plugin(config_dir_client):
@ -125,4 +123,4 @@ def test_databases(config_dir_client):
assert "demo" == databases[0]["name"]
assert databases[0]["is_mutable"]
assert "immutable" == databases[1]["name"]
# assert not databases[1]["is_mutable"]
assert not databases[1]["is_mutable"]