# Events App Calendar and event booking service for the Rose Ash cooperative platform. Manages calendars, time slots, calendar entries (bookings), tickets, and ticket types. ## Structure ``` app.py # Application factory (create_base_app + blueprints) path_setup.py # Adds project root + app dir to sys.path entrypoint.sh # Container entrypoint (Redis flush, start) bp/ calendars/ # Calendar listing calendar/ # Single calendar view and admin calendar_entries/ # Calendar entries listing calendar_entry/ # Single entry view and admin day/ # Day view and admin slots/ # Slot listing slot/ # Single slot management ticket_types/ # Ticket type listing ticket_type/ # Single ticket type management tickets/ # Ticket listing ticket_admin/ # Ticket administration markets/ # Page-scoped marketplace views payments/ # Payment-related views fragments/ # container-nav, container-cards fragments models/ # Re-export stubs (Calendar, CalendarEntry, Ticket, etc.) services/ # register_domain_services() — wires calendar + market + cart templates/ # Events-specific templates (override shared/) ``` ## Models All events-domain models live in `shared/models/`: | Model | Description | |-------|-------------| | **Calendar** | Container for entries, scoped to a page via `container_type + container_id` | | **CalendarEntry** | A bookable event/time slot with state (pending/ordered/provisional) and cost | | **CalendarSlot** | Recurring time bands (day-of-week + time range) within a calendar | | **TicketType** | Named ticket categories with price and count | | **Ticket** | Individual ticket with unique code, state, and `order_id` (plain integer, no FK) | | **CalendarEntryPost** | Junction linking entries to content via `content_type + content_id` | `order_id` on CalendarEntry and Ticket is a plain integer column — no FK constraint to the orders table. The cart app writes these values via service calls, not directly. ## Cross-domain communication - `services.market.*` — marketplace queries for page views - `services.cart.*` — cart summary for context processor - `services.federation.*` — AP publishing for new entries ## Fragments served - **container-nav** — calendar entries + links for blog sidebar - **container-cards** — event cards for blog listing pages