Remove render_to_sx from public API: enforce sx_call for all service code
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m44s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m44s
Replace ~250 render_to_sx calls across all services with sync sx_call, converting many async functions to sync where no other awaits remained. Make render_to_sx/render_to_sx_with_env private (_render_to_sx). Add (post-header-ctx) IO primitive and shared post/post-admin defmacros. Convert built-in post/post-admin layouts from Python to register_sx_layout with .sx defcomps. Remove dead post_admin_mobile_nav_sx. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -126,22 +126,22 @@ def _register_blog_helpers() -> None:
|
||||
|
||||
# --- Editor helpers ---
|
||||
|
||||
async def _h_editor_content(**kw):
|
||||
def _h_editor_content(**kw):
|
||||
from .renders import render_editor_panel
|
||||
return await render_editor_panel()
|
||||
return render_editor_panel()
|
||||
|
||||
|
||||
async def _h_editor_page_content(**kw):
|
||||
def _h_editor_page_content(**kw):
|
||||
from .renders import render_editor_panel
|
||||
return await render_editor_panel(is_page=True)
|
||||
return render_editor_panel(is_page=True)
|
||||
|
||||
|
||||
# --- Post admin helpers ---
|
||||
|
||||
async def _h_post_admin_content(slug=None, **kw):
|
||||
await _ensure_post_data(slug)
|
||||
from shared.sx.helpers import render_to_sx
|
||||
return await render_to_sx("blog-admin-placeholder")
|
||||
from shared.sx.helpers import sx_call
|
||||
return sx_call("blog-admin-placeholder")
|
||||
|
||||
|
||||
async def _h_post_data_content(slug=None, **kw):
|
||||
@@ -264,32 +264,32 @@ async def _h_post_preview_content(slug=None, **kw):
|
||||
await _ensure_post_data(slug)
|
||||
from quart import g
|
||||
from shared.services.registry import services
|
||||
from shared.sx.helpers import render_to_sx
|
||||
from shared.sx.helpers import sx_call
|
||||
from shared.sx.parser import SxExpr
|
||||
|
||||
preview = await services.blog_page.preview_data(g.s)
|
||||
|
||||
sections: list[str] = []
|
||||
if preview.get("sx_pretty"):
|
||||
sections.append(await render_to_sx("blog-preview-section",
|
||||
sections.append(sx_call("blog-preview-section",
|
||||
title="S-Expression Source", content=SxExpr(preview["sx_pretty"])))
|
||||
if preview.get("json_pretty"):
|
||||
sections.append(await render_to_sx("blog-preview-section",
|
||||
sections.append(sx_call("blog-preview-section",
|
||||
title="Lexical JSON", content=SxExpr(preview["json_pretty"])))
|
||||
if preview.get("sx_rendered"):
|
||||
rendered_sx = await render_to_sx("blog-preview-rendered", html=preview["sx_rendered"])
|
||||
sections.append(await render_to_sx("blog-preview-section",
|
||||
rendered_sx = sx_call("blog-preview-rendered", html=preview["sx_rendered"])
|
||||
sections.append(sx_call("blog-preview-section",
|
||||
title="SX Rendered", content=SxExpr(rendered_sx)))
|
||||
if preview.get("lex_rendered"):
|
||||
rendered_sx = await render_to_sx("blog-preview-rendered", html=preview["lex_rendered"])
|
||||
sections.append(await render_to_sx("blog-preview-section",
|
||||
rendered_sx = sx_call("blog-preview-rendered", html=preview["lex_rendered"])
|
||||
sections.append(sx_call("blog-preview-section",
|
||||
title="Lexical Rendered", content=SxExpr(rendered_sx)))
|
||||
|
||||
if not sections:
|
||||
return await render_to_sx("blog-preview-empty")
|
||||
return sx_call("blog-preview-empty")
|
||||
|
||||
inner = " ".join(sections)
|
||||
return await render_to_sx("blog-preview-panel", sections=SxExpr(f"(<> {inner})"))
|
||||
return sx_call("blog-preview-panel", sections=SxExpr(f"(<> {inner})"))
|
||||
|
||||
|
||||
async def _h_post_entries_content(slug=None, **kw):
|
||||
@@ -315,7 +315,7 @@ async def _h_post_entries_content(slug=None, **kw):
|
||||
await g.s.refresh(calendar, ["entries", "post"])
|
||||
|
||||
# Associated entries list
|
||||
assoc_html = await _render_associated_entries(all_calendars, associated_entry_ids, post_slug)
|
||||
assoc_html = _render_associated_entries(all_calendars, associated_entry_ids, post_slug)
|
||||
|
||||
# Calendar browser
|
||||
cal_items: list[str] = []
|
||||
@@ -505,7 +505,7 @@ async def _h_post_edit_content(slug=None, **kw):
|
||||
from sqlalchemy.orm import selectinload
|
||||
from shared.infrastructure.data_client import fetch_data
|
||||
from shared.browser.app.csrf import generate_csrf_token
|
||||
from shared.sx.helpers import render_to_sx
|
||||
from shared.sx.helpers import sx_call
|
||||
from shared.sx.parser import SxExpr, serialize as sx_serialize
|
||||
from bp.post.admin.routes import _post_to_edit_dict
|
||||
|
||||
@@ -584,9 +584,9 @@ async def _h_post_edit_content(slug=None, **kw):
|
||||
parts: list[str] = []
|
||||
|
||||
if save_error:
|
||||
parts.append(await render_to_sx("blog-editor-error", error=save_error))
|
||||
parts.append(sx_call("blog-editor-error", error=save_error))
|
||||
|
||||
parts.append(await render_to_sx("blog-editor-edit-form",
|
||||
parts.append(sx_call("blog-editor-edit-form",
|
||||
csrf=csrf,
|
||||
updated_at=str(updated_at),
|
||||
title_val=title_val,
|
||||
@@ -603,9 +603,9 @@ async def _h_post_edit_content(slug=None, **kw):
|
||||
footer_extra=footer_extra_sx,
|
||||
))
|
||||
|
||||
parts.append(await render_to_sx("blog-editor-publish-js", already_emailed=already_emailed))
|
||||
parts.append(await render_to_sx("blog-editor-styles", css_href=editor_css))
|
||||
parts.append(await render_to_sx("sx-editor-styles"))
|
||||
parts.append(sx_call("blog-editor-publish-js", already_emailed=already_emailed))
|
||||
parts.append(sx_call("blog-editor-styles", css_href=editor_css))
|
||||
parts.append(sx_call("sx-editor-styles"))
|
||||
|
||||
init_js = (
|
||||
'(function() {'
|
||||
@@ -705,10 +705,10 @@ async def _h_post_edit_content(slug=None, **kw):
|
||||
' }, 50); }'
|
||||
'})();'
|
||||
)
|
||||
parts.append(await render_to_sx("blog-editor-scripts",
|
||||
parts.append(sx_call("blog-editor-scripts",
|
||||
js_src=editor_js,
|
||||
sx_editor_js_src=sx_editor_js,
|
||||
init_js=init_js))
|
||||
|
||||
return await render_to_sx("blog-editor-panel",
|
||||
return sx_call("blog-editor-panel",
|
||||
parts=SxExpr("(<> " + " ".join(parts) + ")"))
|
||||
|
||||
Reference in New Issue
Block a user