mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Implemented inspect-data for config dirs, refs #731
This commit is contained in:
parent
79c9cf4fec
commit
0d8fa53fab
2 changed files with 16 additions and 9 deletions
|
|
@ -169,18 +169,27 @@ class Datasette:
|
||||||
assert config_dir is None or isinstance(
|
assert config_dir is None or isinstance(
|
||||||
config_dir, Path
|
config_dir, Path
|
||||||
), "config_dir= should be a pathlib.Path"
|
), "config_dir= should be a pathlib.Path"
|
||||||
# TODO: Use 'inspect-data.json' to decide on immutables
|
self.files = tuple(files) + tuple(immutables or [])
|
||||||
immutables = immutables or []
|
|
||||||
self.files = tuple(files) + tuple(immutables)
|
|
||||||
if config_dir:
|
if config_dir:
|
||||||
self.files += tuple([str(p) for p in config_dir.glob("*.db")])
|
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:
|
if not self.files:
|
||||||
self.files = [MEMORY]
|
self.files = [MEMORY]
|
||||||
elif memory:
|
elif memory:
|
||||||
self.files = (MEMORY,) + self.files
|
self.files = (MEMORY,) + self.files
|
||||||
self.databases = collections.OrderedDict()
|
self.databases = collections.OrderedDict()
|
||||||
self.inspect_data = inspect_data
|
|
||||||
for file in self.files:
|
for file in self.files:
|
||||||
path = file
|
path = file
|
||||||
is_memory = False
|
is_memory = False
|
||||||
|
|
|
||||||
|
|
@ -98,9 +98,7 @@ def test_config(config_dir_client):
|
||||||
def test_plugins(config_dir_client):
|
def test_plugins(config_dir_client):
|
||||||
response = config_dir_client.get("/-/plugins.json")
|
response = config_dir_client.get("/-/plugins.json")
|
||||||
assert 200 == response.status
|
assert 200 == response.status
|
||||||
assert [
|
assert "hooray.py" in {p["name"] for p in json.loads(response.text)}
|
||||||
{"name": "hooray.py", "static": False, "templates": False, "version": None}
|
|
||||||
] == json.loads(response.text)
|
|
||||||
|
|
||||||
|
|
||||||
def test_templates_and_plugin(config_dir_client):
|
def test_templates_and_plugin(config_dir_client):
|
||||||
|
|
@ -125,4 +123,4 @@ def test_databases(config_dir_client):
|
||||||
assert "demo" == databases[0]["name"]
|
assert "demo" == databases[0]["name"]
|
||||||
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"]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue