feat: implement exchange creation

Add Exchange model, API endpoint, and form validation
for creating new gift exchanges.

- Create ExchangeForm with timezone validation
- Add admin routes for creating and viewing exchanges
- Generate unique 12-char slug for each exchange
- Validate registration/exchange dates
- Display exchanges in dashboard
- All tests passing with 92% coverage

Story: 2.1
This commit is contained in:
2025-12-22 12:41:28 -07:00
parent 7580c39a84
commit 8554f27d86
12 changed files with 837 additions and 7 deletions

18
src/routes/participant.py Normal file
View File

@@ -0,0 +1,18 @@
"""Participant routes for Sneaky Klaus application."""
from flask import Blueprint
participant_bp = Blueprint("participant", __name__, url_prefix="")
@participant_bp.route("/exchange/<slug>/register")
def register(slug):
"""Participant registration page (stub for now).
Args:
slug: Exchange registration slug.
Returns:
Rendered registration page template.
"""
return f"Registration page for exchange: {slug}"