From cef6aa85b6a67f29e97d898873fcb8097ca68141 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sat, 23 May 2026 20:41:32 -0700 Subject: [PATCH] Remove source and source_key columns from JumpSQL Refs https://github.com/simonw/datasette/pull/2732#issuecomment-4527290391 --- datasette/default_debug_menu.py | 4 +--- datasette/default_jump_items.py | 6 ------ datasette/jump.py | 6 ------ datasette/views/special.py | 10 +++++++--- docs/plugin_hooks.rst | 8 -------- tests/test_jump.py | 10 +--------- 6 files changed, 9 insertions(+), 35 deletions(-) diff --git a/datasette/default_debug_menu.py b/datasette/default_debug_menu.py index e9576d99..6127b2a6 100644 --- a/datasette/default_debug_menu.py +++ b/datasette/default_debug_menu.py @@ -66,12 +66,10 @@ def jump_items_sql(datasette, actor, request): label=label, url=datasette.urls.path(path), description=description, - source="datasette.default_debug_menu", - sort_key=70 + index, search_text=f"debug {label} {description}", item_type="debug", ) - for index, (path, label, description) in enumerate(DEBUG_MENU_ITEMS) + for path, label, description in DEBUG_MENU_ITEMS ] return inner diff --git a/datasette/default_jump_items.py b/datasette/default_jump_items.py index 844fb6b6..d215e7ec 100644 --- a/datasette/default_jump_items.py +++ b/datasette/default_jump_items.py @@ -29,8 +29,6 @@ def jump_items_sql(datasette, actor, request): 'database', parent ) AS url, parent AS search_text, - 10 AS sort_key, - 'datasette' AS source, NULL AS display_name FROM allowed_databases """, @@ -51,8 +49,6 @@ def jump_items_sql(datasette, actor, request): 'table', allowed_tables.child ) AS url, allowed_tables.parent || ' ' || allowed_tables.child AS search_text, - CASE WHEN catalog_views.view_name IS NULL THEN 20 ELSE 25 END AS sort_key, - 'datasette' AS source, NULL AS display_name FROM allowed_tables LEFT JOIN catalog_views @@ -76,8 +72,6 @@ def jump_items_sql(datasette, actor, request): 'query', allowed_queries.child ) AS url, allowed_queries.parent || ' ' || allowed_queries.child AS search_text, - 30 AS sort_key, - 'datasette' AS source, NULL AS display_name FROM allowed_queries """, diff --git a/datasette/jump.py b/datasette/jump.py index 5a67d49e..17c86bfd 100644 --- a/datasette/jump.py +++ b/datasette/jump.py @@ -17,8 +17,6 @@ class JumpSQL: label: str, url: str, description: str = "Menu item", - source: str = "datasette", - sort_key: int = 50, search_text: str | None = None, display_name: str | None = None, item_type: str = "menu", @@ -35,8 +33,6 @@ class JumpSQL: :description AS description, :url AS url, :search_text AS search_text, - :sort_key AS sort_key, - :source AS source, :display_name AS display_name """, params={ @@ -45,8 +41,6 @@ class JumpSQL: "description": description, "url": url, "search_text": search_text, - "sort_key": sort_key, - "source": source, "display_name": display_name, }, ) diff --git a/datasette/views/special.py b/datasette/views/special.py index 5b468f51..272273aa 100644 --- a/datasette/views/special.py +++ b/datasette/views/special.py @@ -993,8 +993,6 @@ class JumpView(BaseView): description, url, search_text, - sort_key, - source, display_name FROM ( {fragment_sql} @@ -1016,7 +1014,13 @@ class JumpView(BaseView): WHEN lower(COALESCE(display_name, label)) LIKE lower(:q || '%') THEN 1 ELSE 2 END, - sort_key, + CASE type + WHEN 'database' THEN 10 + WHEN 'table' THEN 20 + WHEN 'view' THEN 25 + WHEN 'query' THEN 30 + ELSE 50 + END, length(COALESCE(display_name, label)), label LIMIT 101 diff --git a/docs/plugin_hooks.rst b/docs/plugin_hooks.rst index c0b188cb..4d8e980f 100644 --- a/docs/plugin_hooks.rst +++ b/docs/plugin_hooks.rst @@ -1916,12 +1916,6 @@ The SQL query must return these columns: ``search_text`` Text that should be searched by the ``?q=`` parameter. -``sort_key`` - A numeric value used to order results. - -``source`` - A string identifying the plugin that supplied the result. - ``display_name`` A human-readable label for the result, or ``NULL``. Datasette returns this as ``display_name`` in the JSON API, and the jump menu shows it as the primary readable label with ``name`` shown underneath. @@ -1943,8 +1937,6 @@ This example adds a "Plugin dashboard" result for signed-in users: description="Review plugin status and configuration.", url="/-/plugin-dashboard", search_text="plugin dashboard", - sort_key=80, - source="my-plugin", display_name="Plugin dashboard", ) diff --git a/tests/test_jump.py b/tests/test_jump.py index 3282a7c0..adb8626c 100644 --- a/tests/test_jump.py +++ b/tests/test_jump.py @@ -147,8 +147,6 @@ async def test_jump_sql_menu_item_helper(ds_for_jump): label="Plugin dashboard", url="/-/plugin-dashboard", description="Plugin tool", - source="test-plugin", - sort_key=70, search_text="dashboard plugin", display_name="Plugin Dashboard", item_type="plugin", @@ -162,8 +160,6 @@ async def test_jump_sql_menu_item_helper(ds_for_jump): "description": "Plugin tool", "url": "/-/plugin-dashboard", "search_text": "dashboard plugin", - "sort_key": 70, - "source": "test-plugin", "display_name": "Plugin Dashboard", } @@ -200,7 +196,7 @@ async def test_debug_menu_items_are_in_jump_for_debug_menu_permission(): } assert all(descriptions_by_name.values()) assert descriptions_by_name["Databases"] == ( - "List of databases known to this Datasette instance" + "List of databases known to this Datasette instance." ) @@ -228,8 +224,6 @@ async def test_jump_uses_plugin_sql_with_namespaced_parameters(ds_for_jump): 'Plugin supplied item' AS description, '/-/plugin-dashboard' AS url, 'plugin dashboard ' || :actor_id AS search_text, - 80 AS sort_key, - 'test-plugin' AS source, 'Plugin dashboard for ' || :actor_id AS display_name """, params={"actor_id": actor["id"] if actor else "anonymous"}, @@ -275,8 +269,6 @@ async def test_jump_resolves_url_descriptors_from_sql(ds_for_jump): 'table', 'comments' ) AS url, 'table descriptor comments' AS search_text, - 80 AS sort_key, - 'test-plugin' AS source, NULL AS display_name """)