Phase 7: Replace render_template() with s-expression rendering in all POST/PUT/DELETE routes
Eliminates all render_template() calls from POST/PUT/DELETE handlers across all 7 services. Moves sexp_components.py into sexp/ packages per service. - Blog: like toggle, snippets, cache clear, features/sumup/entry panels, create/delete market, WYSIWYG editor panel (render_editor_panel) - Federation: like/unlike/boost/unboost, follow/unfollow, actor card, interaction buttons - Events: ticket widget, checkin, confirm/decline/provisional, tickets config, posts CRUD, description edit/save, calendar/slot/ticket_type CRUD, payments, buy tickets, day main panel, entry page - Market: like toggle, cart add response - Account: newsletter toggle - Cart: checkout error pages (3 handlers) - Orders: checkout error page (1 handler) Remaining render_template() calls are exclusively in GET handlers and internal services (email templates, fragment endpoints). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -216,7 +216,49 @@ def register():
|
||||
if ident["session_id"] is not None:
|
||||
frag_params["session_id"] = ident["session_id"]
|
||||
|
||||
html = await render_template("_types/day/_main_panel.html")
|
||||
# Re-query day entries for the sexp component
|
||||
from datetime import date as date_cls, timedelta
|
||||
from bp.calendar.services import get_visible_entries_for_period
|
||||
from quart import session as qsession
|
||||
|
||||
period_start = datetime(year, month, day, tzinfo=timezone.utc)
|
||||
period_end = period_start + timedelta(days=1)
|
||||
user = getattr(g, "user", None)
|
||||
session_id = qsession.get("calendar_sid")
|
||||
|
||||
visible = await get_visible_entries_for_period(
|
||||
sess=g.s,
|
||||
calendar_id=g.calendar.id,
|
||||
period_start=period_start,
|
||||
period_end=period_end,
|
||||
user=user,
|
||||
session_id=session_id,
|
||||
)
|
||||
|
||||
# Query day slots for this weekday
|
||||
day_date = date_cls(year, month, day)
|
||||
weekday_attr = ["mon","tue","wed","thu","fri","sat","sun"][day_date.weekday()]
|
||||
stmt = select(CalendarSlot).where(
|
||||
CalendarSlot.calendar_id == g.calendar.id,
|
||||
getattr(CalendarSlot, weekday_attr) == True,
|
||||
CalendarSlot.deleted_at.is_(None),
|
||||
).order_by(CalendarSlot.time_start.asc(), CalendarSlot.id.asc())
|
||||
result = await g.s.execute(stmt)
|
||||
day_slots = list(result.scalars())
|
||||
|
||||
styles = getattr(g, "styles", None) or {}
|
||||
ctx = {
|
||||
"calendar": g.calendar,
|
||||
"day_entries": visible.merged_entries,
|
||||
"day": day,
|
||||
"month": month,
|
||||
"year": year,
|
||||
"hx_select_search": "#main-panel",
|
||||
"styles": styles,
|
||||
}
|
||||
|
||||
from sexp.sexp_components import render_day_main_panel
|
||||
html = render_day_main_panel(ctx)
|
||||
mini_html = await fetch_fragment("cart", "cart-mini", params=frag_params, required=False)
|
||||
return await make_response(html + mini_html, 200)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user