From 6738a32a9d7092d81512d500ea4f5e91779d5b60 Mon Sep 17 00:00:00 2001 From: Alex Garcia Date: Wed, 7 Aug 2024 16:48:07 -0700 Subject: [PATCH 1/3] skip over "queries" blocks when processing database-level metadata items --- datasette/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datasette/app.py b/datasette/app.py index 1f9e9d3009..5dc15083f5 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -454,7 +454,7 @@ async def apply_metadata_json(self): # step 2: database-level metadata for dbname, db in self._metadata_local.get("databases", {}).items(): for key, value in db.items(): - if key == "tables": + if key in ("tables", "queries"): continue await self.set_database_metadata(dbname, key, value) From 4cf1b180a0460c1ecc248b81a3cb9683edca24f2 Mon Sep 17 00:00:00 2001 From: Alex Garcia Date: Thu, 15 Aug 2024 11:19:32 -0700 Subject: [PATCH 2/3] basic test for this specific regression --- tests/test_internals_datasette.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_internals_datasette.py b/tests/test_internals_datasette.py index 2614e02e63..07f5d1af39 100644 --- a/tests/test_internals_datasette.py +++ b/tests/test_internals_datasette.py @@ -173,3 +173,25 @@ async def test_get_permission(ds_client): # And test KeyError with pytest.raises(KeyError): ds.get_permission("missing-permission") + + +@pytest.mark.asyncio +async def test_apply_metadata_json(): + ds = Datasette( + memory=True, + metadata={ + "databases": { + "legislators": { + "tables": {"offices": {"summary": "office address or sumtin"}}, + "queries": { + "millenntial_represetatives": { + "summary": "Social media accounts for current legislators" + } + }, + } + } + }, + ) + await ds.invoke_startup() + assert (await ds.client.get("/")).status_code == 200 + # print(root) From fe97ef3dc15fd7b50faadb922e731cc04f720d88 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Thu, 15 Aug 2024 21:41:50 -0700 Subject: [PATCH 3/3] Tweaked test --- tests/test_internals_datasette.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_internals_datasette.py b/tests/test_internals_datasette.py index 07f5d1af39..135a90996b 100644 --- a/tests/test_internals_datasette.py +++ b/tests/test_internals_datasette.py @@ -178,7 +178,6 @@ async def test_get_permission(ds_client): @pytest.mark.asyncio async def test_apply_metadata_json(): ds = Datasette( - memory=True, metadata={ "databases": { "legislators": { @@ -194,4 +193,3 @@ async def test_apply_metadata_json(): ) await ds.invoke_startup() assert (await ds.client.get("/")).status_code == 200 - # print(root)