feat: implement Story 4.1 - Access Registration Page

Allows potential participants to view exchange details and access
the registration form via unique slug URLs.

Implementation:
- Added ParticipantRegistrationForm with name, email, gift_ideas, and reminder fields
- Created GET /exchange/<slug>/register route
- Built responsive registration template with exchange details
- Exempted participant routes from admin setup requirement
- Comprehensive test coverage for all scenarios

Acceptance Criteria Met:
- Valid slug displays registration form with exchange details
- Invalid slug returns 404
- Form includes all required fields with CSRF protection
- Registration deadline is displayed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-22 17:05:09 -07:00
co-authored by Claude Opus 4.5
parent abed4ac84a
commit 81e2cb8c86
6 changed files with 294 additions and 7 deletions
+10 -1
View File
@@ -134,7 +134,16 @@ def register_setup_check(app: Flask) -> None:
has been set up with an admin account.
"""
# Skip check for certain endpoints
if request.endpoint in ["setup.setup", "static", "health"]:
# Participant routes are public and don't require setup
if request.endpoint in [
"setup.setup",
"static",
"health",
"participant.register",
"participant.request_access",
"participant.magic_login",
"participant.dashboard",
]:
return
# Check if admin exists (always check in testing mode)