Slim sxc/pages/__init__.py for federation, test, cart, blog

Move render functions, layouts, helpers, and utils from __init__.py
to sub-modules (renders.py, layouts.py, helpers.py, utils.py).
Update all bp route imports to point at sub-modules directly.
Each __init__.py is now ≤20 lines of setup + registration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 16:51:57 +00:00
parent 03d7b29745
commit 8eaf4026ab
22 changed files with 1668 additions and 1648 deletions

View File

@@ -46,7 +46,7 @@ async def _render_social_auth_page(component: str, title: str, **kwargs) -> str:
"""Render an auth page with social layout — replaces sx_components helpers."""
from shared.sx.helpers import render_to_sx
from shared.sx.page import get_template_context
from sxc.pages import _social_page
from sxc.pages.utils import _social_page
ctx = await get_template_context()
content = await render_to_sx(component, **{k: v for k, v in kwargs.items() if v})
return await _social_page(ctx, None, content=content, title=title)

View File

@@ -33,7 +33,7 @@ async def _render_choose_username(*, actor=None, error="", username=""):
from shared.sx.helpers import render_to_sx
from shared.sx.parser import SxExpr
from shared.sx.page import get_template_context
from sxc.pages import _social_page
from sxc.pages.utils import _social_page
from markupsafe import escape
ctx = await get_template_context()

View File

@@ -95,7 +95,7 @@ def register(url_prefix="/social"):
@bp.get("/search/page")
async def search_page():
from sxc.pages import _serialize_remote_actor, _serialize_actor
from sxc.pages.utils import _serialize_remote_actor, _serialize_actor
actor = getattr(g, "_social_actor", None)
query = request.args.get("q", "").strip()
@@ -154,7 +154,7 @@ def register(url_prefix="/social"):
async def _actor_card_response(actor, remote_actor_url, is_followed):
"""Re-render a single actor card after follow/unfollow via HTMX."""
from sxc.pages import _serialize_remote_actor, _serialize_actor
from sxc.pages.utils import _serialize_remote_actor, _serialize_actor
remote_dto = await services.federation.get_or_fetch_remote_actor(
g.s, remote_actor_url,
@@ -298,7 +298,7 @@ def register(url_prefix="/social"):
@bp.get("/following/page")
async def following_list_page():
from sxc.pages import _serialize_remote_actor, _serialize_actor
from sxc.pages.utils import _serialize_remote_actor, _serialize_actor
actor = _require_actor()
page = request.args.get("page", 1, type=int)
@@ -320,7 +320,7 @@ def register(url_prefix="/social"):
@bp.get("/followers/page")
async def followers_list_page():
from sxc.pages import _serialize_remote_actor, _serialize_actor
from sxc.pages.utils import _serialize_remote_actor, _serialize_actor
actor = _require_actor()
page = request.args.get("page", 1, type=int)
@@ -387,7 +387,7 @@ def register(url_prefix="/social"):
async def _render_timeline_items(items, timeline_type, actor, actor_id=None):
"""Render timeline pagination items as SX fragment."""
from sxc.pages import _serialize_timeline_item, _serialize_actor
from sxc.pages.utils import _serialize_timeline_item, _serialize_actor
item_dicts = [_serialize_timeline_item(i) for i in items]
actor_data = _serialize_actor(actor)