Migrate all apps to defpage declarative page routes
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m41s

Replace Python GET page handlers with declarative defpage definitions in .sx
files across all 8 apps (sx docs, orders, account, market, cart, federation,
events, blog). Each app now has sxc/pages/ with setup functions, layout
registrations, page helpers, and .sx defpage declarations.

Core infrastructure: add g I/O primitive, PageDef support for auth/layout/
data/content/filter/aside/menu slots, post_author auth level, and custom
layout registration. Remove ~1400 lines of render_*_page/render_*_oob
boilerplate. Update all endpoint references in routes, sx_components, and
templates to defpage_* naming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-03 14:52:34 +00:00
parent 5b4cacaf19
commit c243d17eeb
108 changed files with 3598 additions and 2851 deletions

View File

@@ -40,6 +40,7 @@ IO_PRIMITIVES: frozenset[str] = frozenset({
"request-path",
"nav-tree",
"get-children",
"g",
})
@@ -300,6 +301,19 @@ async def _io_get_children(
# Handler registry
# ---------------------------------------------------------------------------
async def _io_g(
args: list[Any], kwargs: dict[str, Any], ctx: RequestContext
) -> Any:
"""``(g "key")`` → getattr(g, key, None).
Reads a value from the Quart request-local ``g`` object.
Kebab-case keys are converted to snake_case automatically.
"""
from quart import g
key = str(args[0]).replace("-", "_") if args else ""
return getattr(g, key, None)
_IO_HANDLERS: dict[str, Any] = {
"frag": _io_frag,
"query": _io_query,
@@ -311,4 +325,5 @@ _IO_HANDLERS: dict[str, Any] = {
"request-path": _io_request_path,
"nav-tree": _io_nav_tree,
"get-children": _io_get_children,
"g": _io_g,
}