diff --git a/bp/page/routes.py b/bp/page/routes.py index 0df9642..8f49367 100644 --- a/bp/page/routes.py +++ b/bp/page/routes.py @@ -3,8 +3,9 @@ Page summary blueprint — shows upcoming events across all calendars for a container (e.g. the village hall). Routes: - GET // — full page with first page of entries - GET //entries — HTMX fragment for infinite scroll + GET // — full page with first page of entries + GET //entries — HTMX fragment for infinite scroll + POST //tickets/adjust — adjust ticket quantity, returns HX-Refresh """ from __future__ import annotations @@ -78,4 +79,25 @@ def register() -> Blueprint: ) return await make_response(html, 200) + @bp.post("/tickets/adjust") + async def adjust_ticket(): + """Adjust ticket quantity and refresh the page.""" + ident = current_cart_identity() + form = await request.form + entry_id = int(form.get("entry_id", 0)) + count = max(int(form.get("count", 0)), 0) + tt_raw = (form.get("ticket_type_id") or "").strip() + ticket_type_id = int(tt_raw) if tt_raw else None + + await services.calendar.adjust_ticket_quantity( + g.s, entry_id, count, + user_id=ident["user_id"], + session_id=ident["session_id"], + ticket_type_id=ticket_type_id, + ) + + resp = await make_response("", 200) + resp.headers["HX-Refresh"] = "true" + return resp + return bp diff --git a/templates/_types/page_summary/_card.html b/templates/_types/page_summary/_card.html index e954341..3d9b76c 100644 --- a/templates/_types/page_summary/_card.html +++ b/templates/_types/page_summary/_card.html @@ -30,7 +30,7 @@ {% if entry.ticket_price is not none %}
{% set qty = pending_tickets.get(entry.id, 0) %} - {% set ticket_url = url_for('tickets.adjust_quantity') %} + {% set ticket_url = url_for('page_summary.adjust_ticket') %}
£{{ '%.2f'|format(entry.ticket_price) }} diff --git a/templates/_types/page_summary/_card_tile.html b/templates/_types/page_summary/_card_tile.html index 53a8df8..992b451 100644 --- a/templates/_types/page_summary/_card_tile.html +++ b/templates/_types/page_summary/_card_tile.html @@ -32,7 +32,7 @@ £{{ '%.2f'|format(entry.ticket_price) }}/ticket {% set qty = pending_tickets.get(entry.id, 0) %} - {% set ticket_url = url_for('tickets.adjust_quantity') %} + {% set ticket_url = url_for('page_summary.adjust_ticket') %} {% if qty == 0 %}