From d3438c3e25bbcea7067d3a9ca9b5834f9d7ff43c Mon Sep 17 00:00:00 2001 From: Georg Elgeback Date: Sat, 21 Jun 2025 16:29:07 +0000 Subject: [PATCH 1/2] Added support for editing event priority groups. --- api_schemas/event_schemas.py | 1 + routes/event_router.py | 9 +++++++++ services/event_service.py | 12 +++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/api_schemas/event_schemas.py b/api_schemas/event_schemas.py index 3b21e5c..eb9a13d 100644 --- a/api_schemas/event_schemas.py +++ b/api_schemas/event_schemas.py @@ -88,6 +88,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 class AddEventTag(BaseSchema): diff --git a/routes/event_router.py b/routes/event_router.py index 17c0172..f37b5dd 100644 --- a/routes/event_router.py +++ b/routes/event_router.py @@ -15,6 +15,8 @@ from user.permission import Permission import random from typing import List +from helpers.types import MEMBER_ROLES +import typing import pandas as pd @@ -27,6 +29,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 = typing.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 ba1c2b5..3ae8b09 100644 --- a/services/event_service.py +++ b/services/event_service.py @@ -82,7 +82,17 @@ def update_event(event_id: int, data: EventUpdate, db: Session): raise HTTPException(status.HTTP_404_NOT_FOUND) 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 existing priorities + db.query(Priority_DB).filter_by(event_id=event.id).delete() + # Then create new ones + 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 From 3cd8138a0e257bb473bea3d4a8f0384ae7dd214b Mon Sep 17 00:00:00 2001 From: Georg Elgeback Date: Sun, 22 Jun 2025 11:21:29 +0000 Subject: [PATCH 2/2] Copilot suggestions --- routes/event_router.py | 5 ++--- services/event_service.py | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/routes/event_router.py b/routes/event_router.py index f37b5dd..39d687b 100644 --- a/routes/event_router.py +++ b/routes/event_router.py @@ -14,9 +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 typing import pandas as pd @@ -32,7 +31,7 @@ def get_all_events(db: DB_dependency): @event_router.get("/priorities", response_model=list[str]) def get_event_priorities(): # Extract literal values using typing - member_roles = typing.get_args(MEMBER_ROLES) + member_roles = get_args(MEMBER_ROLES) return list(member_roles) diff --git a/services/event_service.py b/services/event_service.py index 3ae8b09..6b4f4fd 100644 --- a/services/event_service.py +++ b/services/event_service.py @@ -85,9 +85,9 @@ def update_event(event_id: int, data: EventUpdate, db: Session): if value is not None: if var == "priorities": # Handle priorities separately - # First, remove existing priorities + # First, remove all existing priorities db.query(Priority_DB).filter_by(event_id=event.id).delete() - # Then create new ones + # 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)