- Replace all imports from blog.models and cart.models
with shared.models equivalents
- Convert events/models/calendars.py to re-export stub
- Update shared + glue submodule pointers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1-3 of decoupling:
- path_setup.py adds project root to sys.path
- Events-owned models in events/models/ (calendars with all related models)
- All imports updated: shared.infrastructure, shared.db, shared.browser, etc.
- Calendar uses container_type/container_id instead of post_id FK
- CalendarEntryPost uses content_type/content_id (generic content refs)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
App templates must override shared templates so calendar pages
can skip the post-specific meta block.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
app.py is a top-level module, not inside a package, so relative
imports (from .bp...) fail at runtime.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>