swingmusic/server/app/lib/playlistlib.py
geoffrey45 fe0d7cae1a [server] fix playlist methods
- deepcopy playlists in get_all_playlists
2022-03-27 18:13:51 +03:00

39 lines
1.1 KiB
Python

"""
This library contains all the functions related to playlists.
"""
from progress.bar import Bar
from app import api, instances, models, exceptions, helpers
from app.lib import trackslib
TrackExistsInPlaylist = exceptions.TrackExistsInPlaylist
def add_track(playlistid: str, trackid: str):
"""
Adds a track to a playlist in the api.PLAYLISTS dict and to the database.
"""
for playlist in api.PLAYLISTS:
if playlist.playlistid == playlistid:
track = trackslib.get_track_by_id(trackid)
if track not in playlist.tracks:
playlist.tracks.append(track)
instances.playlist_instance.add_track_to_playlist(playlistid, track)
return
else:
raise TrackExistsInPlaylist("Track already in playlist.")
def create_all_playlists():
"""
Gets all playlists from the database.
"""
playlists = instances.playlist_instance.get_all_playlists()
_bar = Bar("Creating playlists", max=len(playlists))
for playlist in playlists:
api.PLAYLISTS.append(models.Playlist(playlist))
_bar.next()
_bar.finish()