update rooms.py and main.py

This commit is contained in:
ben
2026-08-17 17:33:23 +02:00
parent 996372c89b
commit 139e17114a
2 changed files with 101 additions and 1 deletions
+22 -1
View File
@@ -215,4 +215,25 @@ def get_event_creator(event_id):
if event is None:
return None
return event["creator_id"]
return event["creator_id"]
def confirm_event(event_id):
execute(
"""
UPDATE events
SET status = 'confirmed'
WHERE id = ?
""",
(event_id,),
)
def cancel_event(event_id):
execute(
"""
UPDATE events
SET status = 'cancelled'
WHERE id = ?
""",
(event_id,),
)
+79
View File
@@ -48,6 +48,8 @@ from events import (
get_event,
get_event_room_id,
get_event_creator,
confirm_event,
cancel_event,
)
from event_signups import (
@@ -701,6 +703,83 @@ def api_get_event(
return dict(event)
@app.post(
"/events/{event_id}/confirm",
summary="Confirm an event",
description="Manually confirms an event. Only the event creator or a room admin can perform this action.",
)
def api_confirm_event(
event_id: int,
user_id: int = Depends(get_current_user),
):
room_id = get_event_room_id(event_id)
creator_id = get_event_creator(event_id)
if room_id is None or creator_id is None:
raise HTTPException(
status_code=404,
detail="event not found",
)
is_creator = creator_id == user_id
is_admin = has_role(
room_id,
user_id,
"admin",
)
if not is_creator and not is_admin:
raise HTTPException(
status_code=403,
detail="event creator or admin permission required",
)
confirm_event(event_id)
return {
"status": "confirmed",
"event_id": event_id,
}
@app.post(
"/events/{event_id}/cancel",
summary="Cancel an event",
description="Cancels an event. Only the event creator or a room admin can perform this action.",
)
def api_cancel_event(
event_id: int,
user_id: int = Depends(get_current_user),
):
room_id = get_event_room_id(event_id)
creator_id = get_event_creator(event_id)
if room_id is None or creator_id is None:
raise HTTPException(
status_code=404,
detail="event not found",
)
is_creator = creator_id == user_id
is_admin = has_role(
room_id,
user_id,
"admin",
)
if not is_creator and not is_admin:
raise HTTPException(
status_code=403,
detail="event creator or admin permission required",
)
cancel_event(event_id)
return {
"status": "cancelled",
"event_id": event_id,
}
@app.post(
"/events/{event_id}/respond",