diff --git a/folkugat_web/api/routes/playlist/playlist.py b/folkugat_web/api/routes/playlist/playlist.py index b268cc2..4b37f12 100644 --- a/folkugat_web/api/routes/playlist/playlist.py +++ b/folkugat_web/api/routes/playlist/playlist.py @@ -1,14 +1,76 @@ from typing import Annotated -from fastapi import Form, Request +from fastapi import Form, HTTPException, Request from folkugat_web.api.router import get_router from folkugat_web.fragments import playlist from folkugat_web.services import auth +from folkugat_web.services import playlists as playlists_service from folkugat_web.services.temes import write as temes_service +from folkugat_web.templates import templates router = get_router() +@router.get("/playlist/{playlist_id}") +def page( + request: Request, + logged_in: auth.LoggedIn, + playlist_id: int, +): + playlist = playlists_service.get_playlist(playlist_id=playlist_id) + if not playlist: + raise HTTPException(status_code=404, detail="Could not find playlist") + return templates.TemplateResponse( + "index.html", + { + "request": request, + "page_title": "Folkugat - Setlist", + "page_description": playlist.name or "Llista de temes", + "page_card": None, + "content": f"/api/content/playlist/{playlist_id}", + "logged_in": logged_in, + } + ) + + +@router.get("/api/content/playlist/{playlist_id}") +def contingut( + request: Request, + logged_in: auth.LoggedIn, + playlist_id: int, +): + return playlist.pagina(request, playlist_id, logged_in) + + +@router.get("/api/playlist/{playlist_id}/name") +def get_name( + request: Request, + logged_in: auth.LoggedIn, + playlist_id: int, +): + return playlist.name(request=request, playlist_id=playlist_id, logged_in=logged_in) + + +@router.get("/api/playlist/{playlist_id}/editor/name") +def name_editor( + request: Request, + logged_in: auth.RequireLogin, + playlist_id: int, +): + return playlist.name_editor(request=request, playlist_id=playlist_id, logged_in=logged_in) + + +@router.put("/api/playlist/{playlist_id}/name") +def set_name( + request: Request, + logged_in: auth.RequireLogin, + playlist_id: int, + name: Annotated[str, Form()], +): + _ = playlists_service.update_name(playlist_id=playlist_id, name=name) + return playlist.name(request=request, playlist_id=playlist_id, logged_in=logged_in) + + @router.post("/api/playlist/{playlist_id}/set") def add_set( request: Request, diff --git a/folkugat_web/assets/templates/fragments/playlist/editor/name.html b/folkugat_web/assets/templates/fragments/playlist/editor/name.html new file mode 100644 index 0000000..c1562fd --- /dev/null +++ b/folkugat_web/assets/templates/fragments/playlist/editor/name.html @@ -0,0 +1,26 @@ +