Add endpoint for leaving invited events

This commit is contained in:
Peter Vacho 2025-01-02 15:05:57 +01:00
parent 83b55d43ff
commit d19e2a5473
Signed by: school
GPG key ID: 8CFC3837052871B4

View file

@ -320,6 +320,30 @@ async def delete_event(event_id: PydanticObjectId, user: CurrentUserDep) -> Resp
return Response(status_code=status.HTTP_204_NO_CONTENT)
@events_router.delete("/{event_id}/invited")
async def delete_invited_event(event_id: PydanticObjectId, user: CurrentUserDep) -> Response:
"""Remove yourself as an attendee of given event."""
event = await Event.get(event_id, fetch_links=True)
if event is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Event with given id doesn't exist")
for attendee in event.attendees:
if cast(User, attendee).id == user.id:
break
else: # nobreak
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="You can only access events you attend",
)
event.attendees.remove(attendee)
_ = await event.replace()
# NOTE: We might want to notify the event owner about the attendee leaving
return Response(status_code=status.HTTP_204_NO_CONTENT)
@events_router.post("")
async def create_event(
user: CurrentUserDep,