From baf9f1468d557891c0488f1d32006786bd25a5ea Mon Sep 17 00:00:00 2001 From: giles Date: Wed, 4 Mar 2026 09:57:04 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20services.get()=20=E2=86=92=20services.blo?= =?UTF-8?q?g=5Fpage=20attribute=20access?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The service registry uses __getattr__, so .get() is interpreted as looking up a service named "get". Use attribute access instead. Co-Authored-By: Claude Opus 4.6 --- blog/bp/blog/routes.py | 4 ++-- blog/bp/post/routes.py | 2 +- blog/bp/snippets/routes.py | 2 +- blog/sxc/pages/__init__.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/blog/bp/blog/routes.py b/blog/bp/blog/routes.py index 35367d0..3152c6f 100644 --- a/blog/bp/blog/routes.py +++ b/blog/bp/blog/routes.py @@ -146,7 +146,7 @@ def register(url_prefix, title): content = await render_to_sx("blog-home-main", html_content=post.get("html", ""), sx_content=SxExpr(post.get("sx_content", "")) if post.get("sx_content") else None) - meta_data = services.get("blog_page").post_meta_data(post, ctx.get("base_title", "")) + meta_data = services.blog_page.post_meta_data(post, ctx.get("base_title", "")) meta = await render_to_sx("blog-meta", **meta_data) if not is_htmx_request(): @@ -181,7 +181,7 @@ def register(url_prefix, title): link_label_content=SxExpr("(div)"), child_id="blog-header-child", oob=oob) - data = await services.get("blog_page").index_data(g.s) + data = await services.blog_page.index_data(g.s) # Render content, aside, and filter via .sx defcomps content = await render_to_sx("blog-index-main-content", **data) diff --git a/blog/bp/post/routes.py b/blog/bp/post/routes.py index 92ab4d5..e63be1f 100644 --- a/blog/bp/post/routes.py +++ b/blog/bp/post/routes.py @@ -122,7 +122,7 @@ def register(): rights = tctx.get("rights") or {} blog_url_base = host_url(url_for("blog.index")).rstrip("/index").rstrip("/") csrf = generate_csrf_token() - svc = services.get("blog_page") + svc = services.blog_page detail_data = svc.post_detail_data(post, user, rights, csrf, blog_url_base) content = await render_to_sx("blog-post-detail-content", **detail_data) meta_data = svc.post_meta_data(post, tctx.get("base_title", "")) diff --git a/blog/bp/snippets/routes.py b/blog/bp/snippets/routes.py index 8f79406..3b4b45b 100644 --- a/blog/bp/snippets/routes.py +++ b/blog/bp/snippets/routes.py @@ -13,7 +13,7 @@ VALID_VISIBILITY = frozenset({"private", "shared", "admin"}) async def _render_snippets(): """Render snippets list via service data + .sx defcomp.""" from shared.services.registry import services - data = await services.get("blog_page").snippets_data(g.s) + data = await services.blog_page.snippets_data(g.s) return await render_to_sx("blog-snippets-content", **data) diff --git a/blog/sxc/pages/__init__.py b/blog/sxc/pages/__init__.py index 62d180d..173b69c 100644 --- a/blog/sxc/pages/__init__.py +++ b/blog/sxc/pages/__init__.py @@ -673,7 +673,7 @@ async def _h_post_preview_content(slug=None, **kw): from shared.sx.helpers import render_to_sx from shared.sx.parser import SxExpr, serialize as sx_serialize - preview = await services.get("blog_page").preview_data(g.s) + preview = await services.blog_page.preview_data(g.s) sections: list[str] = [] if preview.get("sx_pretty"):