Add extracurricular activities and signup validation to the API

This commit is contained in:
julien Lengrand-Lambert
2025-10-10 14:12:17 +00:00
parent 590ed885f8
commit 7ac864d17d

View File

@@ -38,6 +38,45 @@ activities = {
"schedule": "Mondays, Wednesdays, Fridays, 2:00 PM - 3:00 PM",
"max_participants": 30,
"participants": ["john@mergington.edu", "olivia@mergington.edu"]
},
# Sports related activities
"Soccer Team": {
"description": "Join the school soccer team and compete in matches",
"schedule": "Wednesdays, 4:00 PM - 5:30 PM",
"max_participants": 18,
"participants": ["lucas@mergington.edu", "mia@mergington.edu"]
},
"Basketball Club": {
"description": "Practice basketball skills and play friendly games",
"schedule": "Thursdays, 3:30 PM - 5:00 PM",
"max_participants": 15,
"participants": ["liam@mergington.edu", "ava@mergington.edu"]
},
# Artistic activities
"Art Workshop": {
"description": "Explore painting, drawing, and sculpture techniques",
"schedule": "Mondays, 4:00 PM - 5:30 PM",
"max_participants": 16,
"participants": ["ella@mergington.edu", "noah@mergington.edu"]
},
"Drama Club": {
"description": "Act, direct, and produce school plays and performances",
"schedule": "Tuesdays, 3:30 PM - 5:00 PM",
"max_participants": 20,
"participants": ["isabella@mergington.edu", "jack@mergington.edu"]
},
# Intellectual activities
"Mathletes": {
"description": "Compete in math competitions and solve challenging problems",
"schedule": "Fridays, 4:00 PM - 5:00 PM",
"max_participants": 10,
"participants": ["oliver@mergington.edu", "charlotte@mergington.edu"]
},
"Science Club": {
"description": "Conduct experiments and explore scientific concepts",
"schedule": "Wednesdays, 3:30 PM - 5:00 PM",
"max_participants": 14,
"participants": ["henry@mergington.edu", "amelia@mergington.edu"]
}
}
@@ -55,6 +94,12 @@ def get_activities():
@app.post("/activities/{activity_name}/signup")
def signup_for_activity(activity_name: str, email: str):
"""Sign up a student for an activity"""
# Validate student is not already signed up
for activity in activities.values():
if email in activity["participants"]:
raise HTTPException(status_code=400, detail="Student already signed up for an activity")
# Validate activity exists
if activity_name not in activities:
raise HTTPException(status_code=404, detail="Activity not found")