164 lines
5.1 KiB
Python
164 lines
5.1 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import Request
|
|
from fastapi.responses import HTMLResponse
|
|
from folkugat_web.model.pagines import Pages
|
|
from folkugat_web.services import playlists as playlists_service
|
|
from folkugat_web.services import sessions as sessions_service
|
|
from folkugat_web.services.temes import search as search_service
|
|
from folkugat_web.templates import templates
|
|
|
|
|
|
def pagina(request: Request, session_id: int, logged_in: bool):
|
|
session = sessions_service.get_session(session_id=session_id)
|
|
playlist = playlists_service.get_playlist(session_id=session_id)
|
|
playlist = playlists_service.add_temes_to_playlist(playlist)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/pagina.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"Pages": Pages,
|
|
"session_id": session_id,
|
|
"session": session,
|
|
"playlist": playlist,
|
|
"date_names": sessions_service.get_date_names,
|
|
}
|
|
)
|
|
|
|
|
|
def add_set(request: Request, session_id: int, logged_in: bool):
|
|
new_set = playlists_service.add_set(session_id=session_id)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/set_entry.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"new_entry": True,
|
|
"session_id": session_id,
|
|
"set_id": new_set.id,
|
|
"set_entry": new_set,
|
|
}
|
|
)
|
|
|
|
|
|
def get_set(request: Request, session_id: int, set_id: int, logged_in: bool):
|
|
set_entry = playlists_service.get_set(session_id=session_id, set_id=set_id)
|
|
if set_entry:
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/set_entry.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"new_entry": True,
|
|
"session_id": session_id,
|
|
"set_id": set_id,
|
|
"set_entry": set_entry,
|
|
}
|
|
)
|
|
else:
|
|
return HTMLResponse()
|
|
|
|
|
|
def delete_set(session_id: int, set_id: int):
|
|
playlists_service.delete_set(session_id=session_id, set_id=set_id)
|
|
return HTMLResponse()
|
|
|
|
|
|
def add_tema(request: Request, session_id: int, set_id: int, logged_in: bool):
|
|
new_tema = playlists_service.add_tema(session_id=session_id, set_id=set_id)
|
|
playlists_service.add_tema_to_tema_in_set(new_tema)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/tema_editor.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"session_id": session_id,
|
|
"set_id": set_id,
|
|
"tema_entry": new_tema,
|
|
}
|
|
)
|
|
|
|
|
|
def get_tema(request: Request, session_id: int, set_id: int, entry_id: int, logged_in: bool):
|
|
tema_entry = playlists_service.get_tema(entry_id=entry_id)
|
|
playlists_service.add_tema_to_tema_in_set(tema_entry)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/tema_entry.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"session_id": session_id,
|
|
"set_id": set_id,
|
|
"tema_entry": tema_entry,
|
|
}
|
|
)
|
|
|
|
|
|
def get_tema_editor(request: Request, session_id: int, set_id: int, entry_id: int, logged_in: bool):
|
|
tema_entry = playlists_service.get_tema(entry_id=entry_id)
|
|
playlists_service.add_tema_to_tema_in_set(tema_entry)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/tema_editor.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"session_id": session_id,
|
|
"set_id": set_id,
|
|
"tema_entry": tema_entry,
|
|
}
|
|
)
|
|
|
|
|
|
def delete_tema(session_id: int, set_id: int, entry_id: int):
|
|
playlists_service.delete_tema(entry_id=entry_id)
|
|
if not playlists_service.get_set(session_id=session_id, set_id=set_id):
|
|
headers = {
|
|
"HX-Trigger": f"reload-set-{set_id}"
|
|
}
|
|
else:
|
|
headers = {}
|
|
return HTMLResponse(headers=headers)
|
|
|
|
|
|
def busca_tema(
|
|
request: Request,
|
|
session_id: int,
|
|
set_id: int,
|
|
entry_id: int,
|
|
query: str,
|
|
):
|
|
results = search_service.busca_temes(
|
|
query=query,
|
|
hidden=True,
|
|
limit=4,
|
|
offset=0,
|
|
)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/tema_results.html",
|
|
{
|
|
"request": request,
|
|
"session_id": session_id,
|
|
"set_id": set_id,
|
|
"entry_id": entry_id,
|
|
"results": results,
|
|
"query": query,
|
|
}
|
|
)
|
|
|
|
|
|
def set_tema(request: Request, logged_in: bool, session_id: int, set_id: int, entry_id: int, tema_id: int | None):
|
|
playlists_service.set_tema(session_id=session_id, set_id=set_id, entry_id=entry_id, tema_id=tema_id)
|
|
tema_entry = playlists_service.get_tema(entry_id=entry_id)
|
|
playlists_service.add_tema_to_tema_in_set(tema_entry)
|
|
return templates.TemplateResponse(
|
|
"fragments/sessio/tema_entry.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"session_id": session_id,
|
|
"set_id": set_id,
|
|
"tema_entry": tema_entry,
|
|
}
|
|
)
|