From b8724eaf66ddbe39fc9b7d898f3684ef5d76693e Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 22 Feb 2026 22:56:42 +0000 Subject: [PATCH] Add page-local ticket adjust route that returns HX-Refresh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cards were posting to tickets.adjust_quantity which returns the entry detail buy form — wrong context for the page summary. New page_summary.adjust_ticket route calls the service and returns HX-Refresh: true so the whole listing refreshes with correct counts. Co-Authored-By: Claude Opus 4.6 --- bp/page/routes.py | 26 +++++++++++++++++-- templates/_types/page_summary/_card.html | 2 +- templates/_types/page_summary/_card_tile.html | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) 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 %}