diff --git a/api_schemas/event_schemas.py b/api_schemas/event_schemas.py index b767c1e..bfd0cc3 100644 --- a/api_schemas/event_schemas.py +++ b/api_schemas/event_schemas.py @@ -90,6 +90,7 @@ class EventUpdate(BaseSchema): can_signup: bool | None = None drink_package: bool | None = None is_nollning_event: bool | None = None + priorities: list[MEMBER_ROLES] | None = None alcohol_event_type: ALCOHOL_EVENT_TYPES | None = None dresscode: str | None = None price: int | None = None diff --git a/routes/event_router.py b/routes/event_router.py index 5693589..266e319 100644 --- a/routes/event_router.py +++ b/routes/event_router.py @@ -14,7 +14,8 @@ from db_models.tag_model import Tag_DB from user.permission import Permission import random -from typing import List +from typing import List, get_args +from helpers.types import MEMBER_ROLES import pandas as pd @@ -27,6 +28,13 @@ def get_all_events(db: DB_dependency): return events +@event_router.get("/priorities", response_model=list[str]) +def get_event_priorities(): + # Extract literal values using typing + member_roles = get_args(MEMBER_ROLES) + return list(member_roles) + + @event_router.get("/{eventId}", response_model=EventRead) def get_single_event(db: DB_dependency, eventId: int): event = db.query(Event_DB).filter(Event_DB.id == eventId).one_or_none() diff --git a/services/event_service.py b/services/event_service.py index dc4909f..94513d9 100644 --- a/services/event_service.py +++ b/services/event_service.py @@ -93,7 +93,17 @@ def update_event(event_id: int, data: EventUpdate, db: Session): raise HTTPException(400, detail="Price cannot be lower than 0") for var, value in vars(data).items(): - setattr(event, var, value) if value is not None else None + if value is not None: + if var == "priorities": + # Handle priorities separately + # First, remove all existing priorities + db.query(Priority_DB).filter_by(event_id=event.id).delete() + # Then create new ones (or none if empty) + priorities = [Priority_DB(priority=priority, event_id=event.id) for priority in value] + for priority in priorities: + db.add(priority) + else: + setattr(event, var, value) db.commit() return event