Commit Graph

32 Commits

Author SHA1 Message Date
giles
0f8dd636af Remove cross-domain template copies, use shared macros
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 56s
- Cart mini: use macros/cart_icon.html for ticket OOB updates
- Post header: use blog_url() instead of url_for('blog.post.post_detail')

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:33:14 +00:00
giles
77c5fc716a Own events domain templates (Phase 6)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m6s
Calendar, day, entry, slot, ticket templates + date macro moved
from shared to events/templates/. Cross-domain copies: post header,
post admin entries, cart mini.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:55:50 +00:00
giles
2a723af201 Add account-nav-item and account-page fragment handlers (Phase 5)
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 53s
Events now serves tickets/bookings nav links and page panels as
fragments for the account app.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 13:58:08 +00:00
giles
503f7ca7d8 Phase 4: add container-nav/cards fragment handlers, use market fragment
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m4s
Events provides container-nav (calendar entries + links) and
container-cards (batch entries for blog listing) as fragments.
Day and entry routes fetch market container-nav via fragment instead
of widget registry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 13:33:25 +00:00
giles
95af55da39 Replace stale coop_url with blog_url in events templates
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 57s
coop_url was the old blog URL helper, never registered as a Jinja
global. All 8 references across post/entry nav templates updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 11:02:55 +00:00
giles
424c267110 Add global all-events view at / and scope page summary to single page
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 53s
Root / shows all upcoming events across all pages with page badges.
/<slug>/ reverted to show only that page's events.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:13:14 +00:00
giles
dad53fd1b5 Show all events across all pages with page badges
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m1s
Page summary now loads all upcoming events globally, not just the
current page's. Each card shows an amber page badge when the event
belongs to a different page. Links use the correct page slug.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:05:11 +00:00
giles
39f500c41c Inline ticket +/- updates without full page refresh
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 58s
Extract shared _ticket_widget.html with stable #page-ticket-{id} target.
Adjust route returns re-rendered widget + OOB cart-mini swap, same
pattern as the entry detail page's ticket adjust.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:59:27 +00:00
giles
b8724eaf66 Add page-local ticket adjust route that returns HX-Refresh
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 50s
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 <noreply@anthropic.com>
2026-02-22 22:56:42 +00:00
giles
f1b3093d94 Fix ticket cart URLs to use events app's own adjust route
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 52s
Was using cart_url (cross-app) which causes invalid path for HTMX.
Use url_for('tickets.adjust_quantity') — the events-local route.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:52:11 +00:00
giles
e1f96f02b1 Event name links to entry, date header links to day view
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 56s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:45:31 +00:00
giles
9f46520b45 Fix day view links to use correct /day/<Y>/<M>/<D>/ URL format
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m18s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:41:16 +00:00
giles
e5ab555359 Add village hall page summary with infinite scroll
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 53s
New /<slug>/ route shows upcoming confirmed events across all calendars
for a container. Features list/tile view toggle, date-grouped cards,
ticket +/- cart widgets, and infinite scroll pagination.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:28:30 +00:00
giles
90c918595c Fix OOB cart-mini clearing cart icon when adjusting tickets
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 52s
The mini macro was imported without context, so cart_count was invisible
to the macro. Pass count explicitly in _adjust_response.html and add
'with context' to _buy_result.html. Update shared submodule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 09:43:06 +00:00
giles
f445d39d22 Fix cart-mini OOB: compute cart_count explicitly in adjust route
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 52s
Pass cart_count directly to the template instead of relying on the
context processor, which may not resolve correctly for the /tickets/
URL prefix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 09:12:59 +00:00
giles
4aaaf2c7f1 Fix: remove OOB cart-mini from ticket adjust response
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 52s
The OOB swap was replacing the cart display with empty/wrong content.
Cart count updates naturally on next page navigation instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 09:09:17 +00:00
giles
256eb390b0 Replace ticket qty input with +/- buttons, show sold/basket counts
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 57s
- Entry page shows tickets sold count, remaining, and "in basket" count
- Replace numeric input + Buy button with add-to-basket / +/- controls
- New POST /tickets/adjust/ route creates/cancels tickets to target count
- Keep buy form active after adding (no confirmation replacement)
- New service functions: get_sold_ticket_count, get_user_reserved_count,
  cancel_latest_reserved_ticket

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 08:53:12 +00:00
giles
44d089ced4 Update cart badge on ticket purchase via OOB swap
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 57s
The buy_tickets response now includes an OOB swap of #cart-mini
so the cart badge count updates immediately when tickets are reserved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 22:11:53 +00:00
giles
6e9c973572 Remove 41 identical events template overrides of shared templates
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 46s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 20:03:53 +00:00
giles
ac9d97d78d fix: preserve post admin nav bar across events app pages
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 41s
- Add post-admin-header-child row to calendars, calendar, markets,
  and payments index templates so the admin nav bar persists
- Create events-app-specific post/admin nav and header templates
  using coop_url() for blog endpoints instead of url_for()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 23:51:40 +00:00
giles
e0679f8100 feat: add markets and payments management pages
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 45s
- New markets blueprint at /<slug>/markets/ with create/delete
- New payments blueprint at /<slug>/payments/ with SumUp config
- Register both in events app with context processor for markets
- Remove PageConfig feature flag check from calendar creation
  (feature toggles replaced by direct management pages)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 23:45:07 +00:00
giles
438b2edb0d fix: replace stale blog.post.* endpoint refs with coop_url()
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Replace url_for('blog.post.post_detail', ...) and
url_for('blog.post.admin.entries', ...) with coop_url() for
cross-service links back to the blog app.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:02:16 +00:00
giles
dcf716c685 fix: make calendar name a link back to calendar view
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 42s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:52:25 +00:00
giles
838f1ae1bc fix: calendar nav settings cog, header padding, post nav admin link
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
- Calendar nav: fix Slots link URL, add admin cog for admins
- Calendar header: add left padding to calendar name
- Post nav: add settings cog linking to blog admin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:09:37 +00:00
giles
9df5b45696 refactor: remove events post header override (shared covers it)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:54:55 +00:00
giles
fb0fc5999e feat: add post header (village hall menu bar) to calendar pages
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 37s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 10:47:16 +00:00
giles
139cf5fa2f fix: remove extra endcall in calendar header template
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 36s
The premature endcall closed menu_row before desktop_nav,
causing a Jinja nesting error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 09:58:05 +00:00
giles
3624d141dc fix: remove post.slug references from events calendar templates
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 45s
Routes in standalone events mode don't need slug parameter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 02:12:09 +00:00
giles
033d9d617c fix: calendar templates extend root instead of post
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 42s
Prevents 500 errors in standalone events app where post
variable is unavailable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 02:04:35 +00:00
giles
dd9007d572 fix: override meta block in calendar templates
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Calendar templates extend post/index.html which includes _meta.html
expecting a `post` variable. In standalone events mode there's no
post — override with empty meta block.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:35:02 +00:00
giles
1bab546dfc feat: ticket purchase flow, QR display, and admin check-in
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Ticket purchase:
- tickets blueprint with routes for my tickets list, ticket detail with QR
- Buy tickets form on entry detail page (HTMX-powered)
- Ticket services: create, query, availability checking

Admin check-in:
- ticket_admin blueprint with dashboard, lookup, and check-in routes
- QR scanner/lookup interface with real-time search
- Per-entry ticket list view
- Check-in transitions ticket state to checked_in

Internal API:
- GET /internal/events/tickets endpoint for cross-app queries
- POST /internal/events/tickets/<code>/checkin for programmatic check-in

Template fixes:
- All templates updated: blog.post.calendars.* → calendars.*
- Removed slug=post.slug parameters (standalone events service)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 00:00:35 +00:00
giles
3c0fa45f8c feat: initialize events app with calendars, slots, tickets, and internal API
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
Extract events/calendar functionality into standalone microservice:
- app.py and events_api.py from apps/events/
- Calendar blueprints (calendars, calendar, calendar_entries, calendar_entry, day, slots, slot, ticket_types, ticket_type)
- Templates for all calendar/event views including admin
- Dockerfile (APP_MODULE=app:app, IMAGE=events)
- entrypoint.sh (no Alembic - migrations managed by blog app)
- Gitea CI workflow for build and deploy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 23:16:32 +00:00