diff --git a/apps/api/src/admin/participant_manager.py b/apps/api/src/admin/participant_manager.py index 354aefe9..a26b3474 100644 --- a/apps/api/src/admin/participant_manager.py +++ b/apps/api/src/admin/participant_manager.py @@ -50,9 +50,16 @@ async def get_hackers() -> list[Participant]: async def check_in_applicant(uid: str, associate: User) -> None: """Check in applicant at IrvineHacks""" record: Optional[dict[str, object]] = await mongodb_handler.retrieve_one( - Collection.USERS, {"_id": uid, "role": Role.APPLICANT} + Collection.USERS, {"_id": uid, "role": {"$exists": True}} ) - if not record or record["status"] not in (Status.ATTENDING, Status.CONFIRMED): + if not record: + raise ValueError + + status = record.get("status", "") + if not status: + raise RuntimeError + + if status not in (Status.ATTENDING, Status.CONFIRMED): raise ValueError new_checkin_entry = (utc_now(), associate.uid) diff --git a/apps/api/src/routers/admin.py b/apps/api/src/routers/admin.py index e8b81be5..85e4b835 100644 --- a/apps/api/src/routers/admin.py +++ b/apps/api/src/routers/admin.py @@ -253,12 +253,11 @@ async def participants() -> list[Participant]: @router.post("/checkin/{uid}") -async def checkin( +async def check_in_participant( uid: str, associate: Annotated[User, Depends(require_checkin_associate)] ) -> None: """Check in participant at IrvineHacks.""" try: - # TODO: non-hackers await participant_manager.check_in_applicant(uid, associate) except ValueError: raise HTTPException(status.HTTP_404_NOT_FOUND)