56 lines
1.6 KiB
Python
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,
|
|
)
|