Afegir cartells a les jams (i esquelet per a slow jams i notes)
This commit is contained in:
71
folkugat_web/api/routes/sessio/cartell.py
Normal file
71
folkugat_web/api/routes/sessio/cartell.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import dataclasses
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import HTTPException, Request, UploadFile
|
||||
from fastapi.params import File
|
||||
from folkugat_web.api.router import get_router
|
||||
from folkugat_web.fragments.sessio import cartell
|
||||
from folkugat_web.services import auth
|
||||
from folkugat_web.services import files as files_service
|
||||
from folkugat_web.services import sessions as sessions_service
|
||||
|
||||
router = get_router()
|
||||
|
||||
|
||||
@router.get("/api/sessio/{session_id}/cartell")
|
||||
def get_cartell(
|
||||
request: Request,
|
||||
logged_in: auth.LoggedIn,
|
||||
session_id: int,
|
||||
):
|
||||
return cartell.cartell(request, session_id, logged_in)
|
||||
|
||||
|
||||
@router.get("/api/sessio/{session_id}/cartell/editor")
|
||||
def get_cartell_editor(
|
||||
request: Request,
|
||||
_: auth.RequireLogin,
|
||||
session_id: int,
|
||||
):
|
||||
return cartell.cartell_editor(request, session_id)
|
||||
|
||||
|
||||
@router.put("/api/sessio/{session_id}/cartell")
|
||||
async def set_cartell(
|
||||
request: Request,
|
||||
logged_in: auth.RequireLogin,
|
||||
session_id: int,
|
||||
upload_file: Annotated[UploadFile, File()],
|
||||
):
|
||||
session = sessions_service.get_session(session_id=session_id)
|
||||
if not session:
|
||||
raise HTTPException(status_code=404, detail="Could not find session")
|
||||
url = await files_service.store_session_cartell(
|
||||
session_id=session_id,
|
||||
upload_file=upload_file,
|
||||
)
|
||||
new_session = dataclasses.replace(
|
||||
session,
|
||||
cartell_url=url,
|
||||
)
|
||||
sessions_service.set_session(new_session)
|
||||
return cartell.cartell(request, session_id, logged_in)
|
||||
|
||||
|
||||
@router.delete("/api/sessio/{session_id}/cartell")
|
||||
async def delete_cartell(
|
||||
request: Request,
|
||||
logged_in: auth.RequireLogin,
|
||||
session_id: int,
|
||||
):
|
||||
session = sessions_service.get_session(session_id=session_id)
|
||||
if not session:
|
||||
raise HTTPException(status_code=404, detail="Could not find session")
|
||||
if session.cartell_url:
|
||||
new_session = dataclasses.replace(
|
||||
session,
|
||||
cartell_url=None,
|
||||
)
|
||||
sessions_service.set_session(new_session)
|
||||
files_service.clean_orphan_files()
|
||||
return cartell.cartell(request, session_id, logged_in)
|
||||
Reference in New Issue
Block a user