Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api_schemas/event_schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 9 additions & 1 deletion routes/event_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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()
Expand Down
12 changes: 11 additions & 1 deletion services/event_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -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