Convert all 23 register_custom_layout calls to register_sx_layout across 6 services
Layout defcomps are now fully self-contained via IO-primitive auto-fetch macros, eliminating Python layout functions that manually threaded context values through SxExpr wrappers. Services converted: - Federation (1 layout): social - Blog (7 layouts): blog, blog-settings, blog-cache, blog-snippets, blog-menu-items, blog-tag-groups, blog-tag-group-edit - SX docs (2 layouts): sx, sx-section - Cart (2 layouts): cart-page, cart-admin + orders/order-detail - Events (9 layouts): calendar-admin, slots, slot, day-admin, entry, entry-admin, ticket-types, ticket-type, markets - Market (2 layouts): market, market-admin New IO primitives added to shared/sx/primitives_io.py: - federation-actor-ctx, cart-page-ctx, request-view-args - events-calendar-ctx, events-day-ctx, events-entry-ctx, events-slot-ctx, events-ticket-type-ctx - market-header-ctx (pre-builds desktop/mobile nav as SxExpr) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -172,6 +172,45 @@ class CartPageService:
|
||||
"summary": summary,
|
||||
}
|
||||
|
||||
async def admin_data(self, session, **kw):
|
||||
"""Populate post context for cart-admin layout headers."""
|
||||
from quart import g
|
||||
from shared.infrastructure.fragments import fetch_fragments
|
||||
|
||||
post = g.page_post
|
||||
slug = post.slug if post else ""
|
||||
post_id = post.id if post else None
|
||||
|
||||
# Fetch container_nav for post header
|
||||
container_nav = ""
|
||||
if post_id:
|
||||
nav_params = {
|
||||
"container_type": "page",
|
||||
"container_id": str(post_id),
|
||||
"post_slug": slug,
|
||||
}
|
||||
events_nav, market_nav = await fetch_fragments([
|
||||
("events", "container-nav", nav_params),
|
||||
("market", "container-nav", nav_params),
|
||||
], required=False)
|
||||
container_nav = events_nav + market_nav
|
||||
|
||||
return {
|
||||
"post": {
|
||||
"id": post_id,
|
||||
"slug": slug,
|
||||
"title": (post.title if post else "")[:160],
|
||||
"feature_image": getattr(post, "feature_image", None),
|
||||
},
|
||||
"container_nav": container_nav,
|
||||
}
|
||||
|
||||
async def payments_admin_data(self, session, **kw):
|
||||
"""Admin data + payments data combined for cart-payments page."""
|
||||
admin = await self.admin_data(session)
|
||||
payments = await self.payments_data(session)
|
||||
return {**admin, **payments}
|
||||
|
||||
async def payments_data(self, session, **kw):
|
||||
from shared.sx.page import get_template_context
|
||||
|
||||
|
||||
Reference in New Issue
Block a user