feat: Add ability to delete events for admins
This commit is contained in:
@@ -54,11 +54,13 @@ def get_user(request: Request, allow_none: bool=True) -> dict | None:
|
||||
:raises HTTPException: If user information is not found and `allow_none` is
|
||||
`False`.
|
||||
"""
|
||||
if os.environ.get("MEAL_MANAGER_FAKE_USER", False):
|
||||
return {"username": "fake_user"}
|
||||
if fake_user := os.environ.get("MEAL_MANAGER_FAKE_USER", False):
|
||||
return {"username": "fake_user", "admin": fake_user == "admin"}
|
||||
if "ynh_user" in request.headers:
|
||||
return {
|
||||
"username": request.headers["ynh_user"],
|
||||
# TODO: This should obviously be replaced with a role based check
|
||||
"admin": request.headers["ynh_user"] == "niklas.m",
|
||||
}
|
||||
if allow_none:
|
||||
return None
|
||||
@@ -219,9 +221,20 @@ async def add_event(request: Request, session: SessionDep, user: StrictUserDep):
|
||||
session.commit()
|
||||
return RedirectResponse(url="/", status_code=status.HTTP_302_FOUND)
|
||||
|
||||
@app.get("/event/{event_id}/delete")
|
||||
async def delete_event(request: Request, session: SessionDep, event_id: int, user: StrictUserDep):
|
||||
if not user["admin"]:
|
||||
raise HTTPException(status_code=403, detail="Not authorized")
|
||||
|
||||
statement = select(Event).where(Event.id == event_id)
|
||||
event = session.scalars(statement).one()
|
||||
|
||||
session.delete(event)
|
||||
session.commit()
|
||||
return RedirectResponse(url="/", status_code=status.HTTP_302_FOUND)
|
||||
|
||||
@app.get("/event/{event_id}")
|
||||
async def read_event(request: Request, event_id: int, session: SessionDep):
|
||||
async def read_event(request: Request, event_id: int, session: SessionDep, user: UserDep):
|
||||
statement = select(Event).where(Event.id == event_id)
|
||||
event = session.scalars(statement).one()
|
||||
|
||||
@@ -238,7 +251,7 @@ async def read_event(request: Request, event_id: int, session: SessionDep):
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="event.html",
|
||||
context={"event": event, "households": households, "now": datetime.now()},
|
||||
context={"event": event, "households": households, "now": datetime.now(), "user": user},
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user