feat: per-page carts with overview, page-scoped checkout, and split blueprints (Phase 4)
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 21s
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 21s
Splits the monolithic cart blueprint into three: cart_overview (GET /), page_cart (/<page_slug>/), and cart_global (webhook, return, add). - New page_cart.py service: get_cart_for_page(), get_calendar_entries_for_page(), get_cart_grouped_by_page() - clear_cart_for_order() and create_order_from_cart() accept page_post_id for scoping - Cart app hydrates page_slug via url_value_preprocessor/url_defaults/hydrate_page - Context processor provides page-scoped cart data when g.page_post exists - Internal API /internal/cart/summary accepts ?page_slug= for page-scoped counts - Overview template shows page cards with item counts and totals - Page cart template reuses show_cart() macro with page-specific header Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
31
bp/cart/overview_routes.py
Normal file
31
bp/cart/overview_routes.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# bp/cart/overview_routes.py — Cart overview (list of page carts)
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from quart import Blueprint, render_template, make_response
|
||||
|
||||
from suma_browser.app.utils.htmx import is_htmx_request
|
||||
from .services import get_cart_grouped_by_page
|
||||
|
||||
|
||||
def register(url_prefix: str) -> Blueprint:
|
||||
bp = Blueprint("cart_overview", __name__, url_prefix=url_prefix)
|
||||
|
||||
@bp.get("/")
|
||||
async def overview():
|
||||
from quart import g
|
||||
page_groups = await get_cart_grouped_by_page(g.s)
|
||||
|
||||
if not is_htmx_request():
|
||||
html = await render_template(
|
||||
"_types/cart/overview/index.html",
|
||||
page_groups=page_groups,
|
||||
)
|
||||
else:
|
||||
html = await render_template(
|
||||
"_types/cart/overview/_oob_elements.html",
|
||||
page_groups=page_groups,
|
||||
)
|
||||
return await make_response(html)
|
||||
|
||||
return bp
|
||||
Reference in New Issue
Block a user