From bec881acb36c568e26638fc307f836a11b0984eb Mon Sep 17 00:00:00 2001 From: giles Date: Sat, 7 Mar 2026 11:03:46 +0000 Subject: [PATCH] Fix asset-url: use Jinja global instead of nonexistent urls.asset_url MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The IO handler and bridge both imported asset_url from shared.infrastructure.urls, but it doesn't exist there — it's a Jinja global defined in jinja_setup.py. Use current_app.jinja_env.globals. Co-Authored-By: Claude Opus 4.6 --- shared/sx/primitives_io.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/shared/sx/primitives_io.py b/shared/sx/primitives_io.py index 83703bd..3356048 100644 --- a/shared/sx/primitives_io.py +++ b/shared/sx/primitives_io.py @@ -377,7 +377,10 @@ async def _io_asset_url( args: list[Any], kwargs: dict[str, Any], ctx: RequestContext ) -> str: """``(asset-url "/img/logo.png")`` → versioned static URL.""" - from shared.infrastructure.urls import asset_url + from quart import current_app + asset_url = current_app.jinja_env.globals.get("asset_url") + if asset_url is None: + raise RuntimeError("asset_url Jinja global not registered") path = str(args[0]) if args else "" return asset_url(path) @@ -458,7 +461,10 @@ def _bridge_app_url(service, *path_parts): return app_url(str(service), path) def _bridge_asset_url(*path_parts): - from shared.infrastructure.urls import asset_url + from quart import current_app + asset_url = current_app.jinja_env.globals.get("asset_url") + if asset_url is None: + raise RuntimeError("asset_url Jinja global not registered") path = str(path_parts[0]) if path_parts else "" return asset_url(path)