Desacoblar playlists de sessions i afegir slow jams

This commit is contained in:
marc
2025-11-01 19:55:24 +01:00
parent 23337f8ab3
commit 2fbdbbf290
41 changed files with 705 additions and 1418 deletions

View File

@@ -14,7 +14,7 @@ def sessio_en_directe(request: Request):
raise RuntimeError("Got a session without id!")
current_set = None
if playlist := playlists_service.get_playlist(session_id=session.id):
if playlist := service.get_session_setlist(session_id=session.id):
if playlist.sets:
current_set = playlists_service.add_temes_to_set(playlist.sets[-1])

View File

@@ -1,6 +1,5 @@
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 query as query_service
@@ -8,31 +7,35 @@ from folkugat_web.services.temes import search as search_service
from folkugat_web.templates import templates
def add_set(request: Request, session_id: int, logged_in: bool):
new_set = playlists_service.add_set(session_id=session_id)
def add_set(
request: Request,
playlist_id: int,
logged_in: bool,
):
new_set = playlists_service.add_set(playlist_id=playlist_id)
return templates.TemplateResponse(
"fragments/sessio/set_entry.html",
"fragments/playlist/set_entry.html",
{
"request": request,
"logged_in": logged_in,
"new_entry": True,
"session_id": session_id,
"playlist_id": playlist_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)
def get_set(request: Request, playlist_id: int, set_id: int, logged_in: bool):
set_entry = playlists_service.get_set(playlist_id=playlist_id, set_id=set_id)
if set_entry:
return templates.TemplateResponse(
"fragments/sessio/set_entry.html",
"fragments/playlist/set_entry.html",
{
"request": request,
"logged_in": logged_in,
"new_entry": True,
"session_id": session_id,
"playlist_id": playlist_id,
"set_id": set_id,
"set_entry": set_entry,
}
@@ -41,59 +44,59 @@ def get_set(request: Request, session_id: int, set_id: int, logged_in: bool):
return HTMLResponse()
def delete_set(session_id: int, set_id: int):
playlists_service.delete_set(session_id=session_id, set_id=set_id)
def delete_set(playlist_id: int, set_id: int):
playlists_service.delete_set(playlist_id=playlist_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)
def add_tema(request: Request, playlist_id: int, set_id: int, logged_in: bool):
new_tema = playlists_service.add_tema(playlist_id=playlist_id, set_id=set_id)
new_tema = playlists_service.add_tema_to_tema_in_set(new_tema)
return templates.TemplateResponse(
"fragments/sessio/tema_editor.html",
"fragments/playlist/tema_editor.html",
{
"request": request,
"logged_in": logged_in,
"session_id": session_id,
"playlist_id": playlist_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):
def get_tema(request: Request, playlist_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)
tema_entry = playlists_service.add_tema_to_tema_in_set(tema_entry)
return templates.TemplateResponse(
"fragments/sessio/tema_entry.html",
"fragments/playlist/tema_entry.html",
{
"request": request,
"logged_in": logged_in,
"session_id": session_id,
"playlist_id": playlist_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):
def get_tema_editor(request: Request, playlist_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)
tema_entry = playlists_service.add_tema_to_tema_in_set(tema_entry)
return templates.TemplateResponse(
"fragments/sessio/tema_editor.html",
"fragments/playlist/tema_editor.html",
{
"request": request,
"logged_in": logged_in,
"session_id": session_id,
"playlist_id": playlist_id,
"set_id": set_id,
"tema_entry": tema_entry,
}
)
def delete_tema(session_id: int, set_id: int, entry_id: int):
def delete_tema(playlist_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):
if not playlists_service.get_set(playlist_id=playlist_id, set_id=set_id):
headers = {
"HX-Trigger": f"reload-set-{set_id}"
}
@@ -104,7 +107,7 @@ def delete_tema(session_id: int, set_id: int, entry_id: int):
def busca_tema(
request: Request,
session_id: int,
playlist_id: int,
set_id: int,
entry_id: int,
query: str,
@@ -114,7 +117,7 @@ def busca_tema(
if not query:
# If there is no query, suggest tunes commonly played together
set_entry = playlists_service.get_set(
session_id=session_id,
playlist_id=playlist_id,
set_id=set_id,
)
if set_entry:
@@ -124,7 +127,7 @@ def busca_tema(
commonly_played_tema_ids = {
cpt.tema.id
for tema_id in tema_ids
for cpt in playlists_service.get_commonly_played_temes(tema_id)
for cpt in sessions_service.get_commonly_played_temes(tema_id)
if cpt.tema.id is not None
} - tema_ids
suggestions = query_service.get_temes_by_ids(
@@ -141,10 +144,10 @@ def busca_tema(
offset=0,
)
return templates.TemplateResponse(
"fragments/sessio/tema_results.html",
"fragments/playlist/tema_results.html",
{
"request": request,
"session_id": session_id,
"playlist_id": playlist_id,
"set_id": set_id,
"entry_id": entry_id,
"results": suggestions,
@@ -153,16 +156,16 @@ def busca_tema(
)
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)
def set_tema(request: Request, logged_in: bool, playlist_id: int, set_id: int, entry_id: int, tema_id: int | None):
playlists_service.set_tema(playlist_id=playlist_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)
tema_entry = playlists_service.add_tema_to_tema_in_set(tema_entry)
return templates.TemplateResponse(
"fragments/sessio/tema_entry.html",
"fragments/playlist/tema_entry.html",
{
"request": request,
"logged_in": logged_in,
"session_id": session_id,
"playlist_id": playlist_id,
"set_id": set_id,
"tema_entry": tema_entry,
}

View File

@@ -1,10 +1,5 @@
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 query as query_service
from folkugat_web.services.temes import search as search_service
from folkugat_web.templates import templates

View File

@@ -0,0 +1,30 @@
from fastapi import Request
from folkugat_web.services import sessions as sessions_service
from folkugat_web.templates import templates
def notes(request: Request, session_id: int, logged_in: bool):
session = sessions_service.get_session(session_id=session_id)
return templates.TemplateResponse(
"fragments/sessio/notes.html",
{
"request": request,
"logged_in": logged_in,
"session_id": session_id,
"session": session,
"notes": session.notes if session and session.notes else "",
}
)
def notes_editor(request: Request, session_id: int):
session = sessions_service.get_session(session_id=session_id)
return templates.TemplateResponse(
"fragments/sessio/notes_editor.html",
{
"request": request,
"session_id": session_id,
"notes": session.notes if session and session.notes else "",
"max": max,
}
)

View File

@@ -9,8 +9,7 @@ def pagina(request: Request, session_id: int, logged_in: bool):
session = sessions_service.get_session(session_id=session_id)
if not session:
raise HTTPException(status_code=404, detail="Could not find session")
playlist = playlists_service.get_playlist(session_id=session_id)
playlist = playlists_service.add_temes_to_playlist(playlist)
session = sessions_service.add_playlists_to_session(session=session)
return templates.TemplateResponse(
"fragments/sessio/pagina.html",
{
@@ -19,7 +18,6 @@ def pagina(request: Request, session_id: int, logged_in: bool):
"Pages": Pages,
"session_id": session_id,
"session": session,
"playlist": playlist,
"date_names": sessions_service.get_date_names,
}
)

View File

@@ -6,22 +6,20 @@ from folkugat_web.services import sessions as sessions_service
from folkugat_web.templates import templates
async def pagina(request: Request, session_id: int, set_id: int, logged_in: bool):
session = sessions_service.get_session(session_id=session_id)
set_ = playlists_service.get_set(session_id=session_id, set_id=set_id)
async def pagina(request: Request, playlist_id: int, set_id: int, logged_in: bool):
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_)
set_ = await playlists_service.add_set_score_to_set(set_)
return templates.TemplateResponse(
"fragments/sessio/set/pagina.html",
"fragments/playlist/set/pagina.html",
{
"request": request,
"logged_in": logged_in,
"Pages": Pages,
"session_id": session_id,
"session": session,
"set": set_,
"session": None,
"date_names": sessions_service.get_date_names,
"LinkType": LinkType,
"ContentType": ContentType,
@@ -33,12 +31,12 @@ async def live(request: Request, logged_in: bool):
session = sessions_service.get_live_session()
set_ = None
if session and session.id:
playlist = playlists_service.get_playlist(session_id=session.id)
if playlist.sets:
playlist = sessions_service.get_session_setlist(session_id=session.id)
if playlist and playlist.sets:
set_ = playlists_service.add_temes_to_set(playlist.sets[-1])
set_ = await playlists_service.add_set_score_to_set(set_)
return templates.TemplateResponse(
"fragments/sessio/set/pagina.html",
"fragments/playlist/set/pagina.html",
{
"request": request,
"logged_in": logged_in,
@@ -56,12 +54,12 @@ async def live_set(request: Request, logged_in: bool):
session = sessions_service.get_live_session()
set_ = None
if session and session.id:
playlist = playlists_service.get_playlist(session_id=session.id)
if playlist.sets:
playlist = sessions_service.get_session_setlist(session_id=session.id)
if playlist and playlist.sets:
set_ = playlists_service.add_temes_to_set(playlist.sets[-1])
set_ = await playlists_service.add_set_score_to_set(set_)
return templates.TemplateResponse(
"fragments/sessio/set/set_page.html",
"fragments/playlist/set/set_page.html",
{
"request": request,
"logged_in": logged_in,