Files
folkugat-web/folkugat_web/api/routes/playlist/set_page.py

56 lines
1.6 KiB
Python

from fastapi import HTTPException, Request
from folkugat_web.api.router import get_router
from folkugat_web.fragments import set_page
from folkugat_web.model import playlists
from folkugat_web.services import auth
from folkugat_web.services import playlists as playlists_service
from folkugat_web.templates import templates
router = get_router()
def set_description(set_: playlists.Set) -> str:
tema_names = [tis.tema.title if tis.tema else "Desconegut" for tis in set_.temes]
return " i ".join(filter(bool, [
", ".join(tema_names[:-1]),
tema_names[-1]
]))
@router.get("/playlist/{playlist_id}/set/{set_id}")
def page(
request: Request,
logged_in: auth.LoggedIn,
playlist_id: int,
set_id: int,
):
set_ = playlists_service.get_set(playlist_id=playlist_id, set_id=set_id)
if not set_:
raise HTTPException(status_code=404, detail="Set not found")
set_ = playlists_service.add_temes_to_set(set_)
return templates.TemplateResponse(
"index.html",
{
"request": request,
"page_title": "Folkugat - Set",
"page_description": set_description(set_=set_),
"content": f"/api/content/playlist/{playlist_id}/set/{set_id}",
"logged_in": logged_in,
}
)
@router.get("/api/content/playlist/{playlist_id}/set/{set_id}")
async def contingut(
request: Request,
logged_in: auth.LoggedIn,
playlist_id: int,
set_id: int,
):
return await set_page.pagina(
request=request,
playlist_id=playlist_id,
set_id=set_id,
logged_in=logged_in,
)