Desacoblar playlists de sessions i afegir slow jams
This commit is contained in:
@@ -5,7 +5,6 @@ from folkugat_web.dal.sql._connection import get_connection
|
||||
from folkugat_web.dal.sql.playlists import query, write
|
||||
from folkugat_web.log import logger
|
||||
from folkugat_web.model import playlists
|
||||
from folkugat_web.model import temes as temes_model
|
||||
from folkugat_web.model.lilypond import score as lilypond_model
|
||||
from folkugat_web.services import files as files_service
|
||||
from folkugat_web.services.lilypond import build as lilypond_build
|
||||
@@ -41,37 +40,37 @@ def add_tema_to_tema_in_set(tema_in_set: playlists.TemaInSet) -> playlists.TemaI
|
||||
return tema_in_set
|
||||
|
||||
|
||||
def get_playlist(session_id: int, con: Connection | None = None) -> playlists.Playlist:
|
||||
def get_playlist(playlist_id: int, con: Connection | None = None) -> playlists.Playlist:
|
||||
return playlists.Playlist.from_playlist_entries(
|
||||
session_id=session_id,
|
||||
entries=list(query.get_playlist_entries(session_id=session_id, con=con))
|
||||
playlist_id=playlist_id,
|
||||
entries=list(query.get_playlist_entries(playlist_id=playlist_id, con=con))
|
||||
)
|
||||
|
||||
|
||||
def add_set(session_id: int, con: Connection | None = None) -> playlists.Set:
|
||||
def add_set(playlist_id: int, con: Connection | None = None) -> playlists.Set:
|
||||
with get_connection(con) as con:
|
||||
curr_playlist = get_playlist(session_id=session_id, con=con)
|
||||
curr_playlist = get_playlist(playlist_id=playlist_id, con=con)
|
||||
new_set_id = max([set_entry.id for set_entry in curr_playlist.sets], default=0) + 1
|
||||
new_entry = playlists.PlaylistEntry(id=None, session_id=session_id, set_id=new_set_id, tema_id=None)
|
||||
new_entry = playlists.PlaylistEntry(id=None, playlist_id=playlist_id, set_id=new_set_id, tema_id=None)
|
||||
inserted_entry = write.insert_playlist_entry(new_entry)
|
||||
return playlists.Set.from_playlist_entries(set_id=inserted_entry.set_id, entries=[inserted_entry])
|
||||
|
||||
|
||||
def get_set(session_id: int, set_id: int, con: Connection | None = None) -> playlists.Set | None:
|
||||
entries = list(query.get_playlist_entries(session_id=session_id, set_id=set_id, con=con))
|
||||
def get_set(playlist_id: int, set_id: int, con: Connection | None = None) -> playlists.Set | None:
|
||||
entries = list(query.get_playlist_entries(playlist_id=playlist_id, set_id=set_id, con=con))
|
||||
if entries:
|
||||
return playlists.Set.from_playlist_entries(set_id=set_id, entries=entries)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def delete_set(session_id: int, set_id: int, con: Connection | None = None):
|
||||
write.delete_playlist_set(session_id=session_id, set_id=set_id, con=con)
|
||||
def delete_set(playlist_id: int, set_id: int, con: Connection | None = None):
|
||||
write.delete_playlist_set(playlist_id=playlist_id, set_id=set_id, con=con)
|
||||
|
||||
|
||||
def add_tema(session_id: int, set_id: int, con: Connection | None = None) -> playlists.TemaInSet:
|
||||
def add_tema(playlist_id: int, set_id: int, con: Connection | None = None) -> playlists.TemaInSet:
|
||||
with get_connection(con) as con:
|
||||
new_entry = playlists.PlaylistEntry(id=None, session_id=session_id, set_id=set_id, tema_id=None)
|
||||
new_entry = playlists.PlaylistEntry(id=None, playlist_id=playlist_id, set_id=set_id, tema_id=None)
|
||||
inserted_entry = write.insert_playlist_entry(new_entry)
|
||||
return playlists.TemaInSet.from_playlist_entry(inserted_entry)
|
||||
|
||||
@@ -87,10 +86,10 @@ def delete_tema(entry_id: int, con: Connection | None = None):
|
||||
write.delete_playlist_entry(entry_id=entry_id, con=con)
|
||||
|
||||
|
||||
def set_tema(session_id: int, set_id: int, entry_id: int, tema_id: int | None,
|
||||
def set_tema(playlist_id: int, set_id: int, entry_id: int, tema_id: int | None,
|
||||
con: Connection | None = None):
|
||||
with get_connection(con) as con:
|
||||
new_entry = playlists.PlaylistEntry(id=entry_id, session_id=session_id, set_id=set_id, tema_id=tema_id)
|
||||
new_entry = playlists.PlaylistEntry(id=entry_id, playlist_id=playlist_id, set_id=set_id, tema_id=tema_id)
|
||||
write.update_playlist_entry(entry=new_entry, con=con)
|
||||
|
||||
|
||||
@@ -163,9 +162,3 @@ async def add_set_score_to_set(tune_set: playlists.Set) -> playlists.Set:
|
||||
)
|
||||
else:
|
||||
return tune_set
|
||||
|
||||
|
||||
def get_commonly_played_temes(
|
||||
tema_id: int,
|
||||
) -> list[temes_model.CommonlyPlayedTema]:
|
||||
return query.get_commonly_played_tunes(tema_id=tema_id)
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
import dataclasses
|
||||
import datetime
|
||||
from datetime import date as Date
|
||||
|
||||
from folkugat_web.config import date as config
|
||||
from folkugat_web.dal.sql import Connection, get_connection
|
||||
from folkugat_web.dal.sql.sessions import playlists as session_playlists
|
||||
from folkugat_web.dal.sql.sessions import query, write
|
||||
from folkugat_web.model import sessions as model
|
||||
from folkugat_web.model import temes as temes_model
|
||||
from folkugat_web.model.playlists import Playlist, PlaylistType
|
||||
from folkugat_web.model.sql import Order, OrderCol, Range
|
||||
from folkugat_web.services import playlists as playlists_service
|
||||
|
||||
|
||||
def get_date_names(date: Date) -> model.DateNames:
|
||||
@@ -77,3 +83,80 @@ def stop_live_sessions():
|
||||
|
||||
def set_live_session(session_id: int):
|
||||
write.set_live_session(session_id=session_id)
|
||||
|
||||
|
||||
def get_session_playlist_id(
|
||||
session_id: int,
|
||||
playlist_type: PlaylistType,
|
||||
con: Connection | None = None,
|
||||
) -> int | None:
|
||||
with get_connection(con=con) as con:
|
||||
return session_playlists.get_playlist_id(
|
||||
session_id=session_id,
|
||||
playlist_type=playlist_type,
|
||||
con=con,
|
||||
)
|
||||
|
||||
|
||||
def get_session_playlist(
|
||||
session_id: int,
|
||||
playlist_type: PlaylistType,
|
||||
con: Connection | None = None,
|
||||
) -> Playlist | None:
|
||||
with get_connection(con=con) as con:
|
||||
playlist_id = get_session_playlist_id(
|
||||
session_id=session_id,
|
||||
playlist_type=playlist_type,
|
||||
con=con,
|
||||
)
|
||||
if playlist_id is None:
|
||||
return None
|
||||
return playlists_service.get_playlist(
|
||||
playlist_id=playlist_id,
|
||||
con=con,
|
||||
)
|
||||
|
||||
|
||||
def get_session_setlist(
|
||||
session_id: int,
|
||||
con: Connection | None = None,
|
||||
) -> Playlist | None:
|
||||
return get_session_playlist(
|
||||
session_id=session_id,
|
||||
playlist_type=PlaylistType.SESSION_SETLIST,
|
||||
con=con,
|
||||
)
|
||||
|
||||
|
||||
def get_session_slowjam(
|
||||
session_id: int,
|
||||
con: Connection | None = None,
|
||||
) -> Playlist | None:
|
||||
return get_session_playlist(
|
||||
session_id=session_id,
|
||||
playlist_type=PlaylistType.SESSION_SLOWJAM,
|
||||
con=con,
|
||||
)
|
||||
|
||||
|
||||
def add_playlists_to_session(session: model.Session) -> model.Session:
|
||||
if session.id is not None:
|
||||
with get_connection() as con:
|
||||
setlist = get_session_setlist(session_id=session.id, con=con)
|
||||
if setlist:
|
||||
setlist = playlists_service.add_temes_to_playlist(setlist)
|
||||
slowjam = get_session_slowjam(session_id=session.id, con=con)
|
||||
if slowjam:
|
||||
slowjam = playlists_service.add_temes_to_playlist(slowjam)
|
||||
session = dataclasses.replace(
|
||||
session,
|
||||
setlist=setlist,
|
||||
slowjam=slowjam,
|
||||
)
|
||||
return session
|
||||
|
||||
|
||||
def get_commonly_played_temes(
|
||||
tema_id: int,
|
||||
) -> list[temes_model.CommonlyPlayedTema]:
|
||||
return session_playlists.get_commonly_played_tunes(tema_id=tema_id)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from collections.abc import Iterable
|
||||
|
||||
from folkugat_web.dal.sql.playlists import query as playlists_q
|
||||
from folkugat_web.dal.sql.sessions import playlists as session_playlists
|
||||
from folkugat_web.dal.sql.temes import query as temes_q
|
||||
from folkugat_web.model import sessions as sessions_model
|
||||
from folkugat_web.model import temes as model
|
||||
@@ -20,7 +20,7 @@ def tema_compute_stats(
|
||||
) -> model.Tema:
|
||||
if tema.id:
|
||||
if tune_sessions_dict is None:
|
||||
tune_sessions_dict = playlists_q.get_tune_sessions(tema_ids=[tema.id])
|
||||
tune_sessions_dict = session_playlists.get_tune_sessions(tema_ids=[tema.id])
|
||||
if tema.id and (tune_sessions := tune_sessions_dict.get(tema.id)):
|
||||
unique_tune_sessions = set(tune_sessions)
|
||||
tema.stats = model.Stats(
|
||||
@@ -33,7 +33,7 @@ def tema_compute_stats(
|
||||
def temes_compute_stats(temes: Iterable[model.Tema]) -> list[model.Tema]:
|
||||
temes = list(temes)
|
||||
tema_ids = [tema.id for tema in temes if tema.id is not None]
|
||||
tune_sessions_dict = playlists_q.get_tune_sessions(tema_ids=tema_ids)
|
||||
tune_sessions_dict = session_playlists.get_tune_sessions(tema_ids=tema_ids)
|
||||
return [tema_compute_stats(tema=tema, tune_sessions_dict=tune_sessions_dict) for tema in temes]
|
||||
|
||||
|
||||
@@ -41,5 +41,5 @@ def tema_compute_played_with(
|
||||
tema: model.Tema,
|
||||
) -> model.Tema:
|
||||
if tema.id:
|
||||
tema.played_with = playlists_q.get_commonly_played_tunes(tema_id=tema.id)
|
||||
tema.played_with = session_playlists.get_commonly_played_tunes(tema_id=tema.id)
|
||||
return tema
|
||||
|
||||
Reference in New Issue
Block a user