mirror of
https://github.com/tcsenpai/swingmusic.git
synced 2025-06-10 04:57:45 +00:00
[server] fix playlist methods
- deepcopy playlists in get_all_playlists
This commit is contained in:
parent
8bb13a109d
commit
fe0d7cae1a
@ -1,22 +1,28 @@
|
|||||||
"""
|
"""
|
||||||
Contains all the playlist routes.
|
Contains all the playlist routes.
|
||||||
"""
|
"""
|
||||||
|
from copy import deepcopy
|
||||||
|
from typing import List
|
||||||
from flask import Blueprint, request
|
from flask import Blueprint, request
|
||||||
from app import instances, api
|
from app import instances, api
|
||||||
from app.lib import playlistlib
|
from app.lib import playlistlib
|
||||||
from app import models
|
from app import models
|
||||||
|
from app import exceptions
|
||||||
|
|
||||||
playlist_bp = Blueprint("playlist", __name__, url_prefix="/")
|
playlist_bp = Blueprint("playlist", __name__, url_prefix="/")
|
||||||
|
|
||||||
|
PlaylistExists = exceptions.PlaylistExists
|
||||||
|
TrackExistsInPlaylist = exceptions.TrackExistsInPlaylist
|
||||||
|
|
||||||
|
|
||||||
@playlist_bp.route("/playlists", methods=["GET"])
|
@playlist_bp.route("/playlists", methods=["GET"])
|
||||||
def get_all_playlists():
|
def get_all_playlists():
|
||||||
|
ppp = deepcopy(api.PLAYLISTS)
|
||||||
playlists = []
|
playlists = []
|
||||||
|
|
||||||
for playlist in api.PLAYLISTS:
|
for pl in ppp:
|
||||||
playlist.tracks = []
|
pl.tracks = []
|
||||||
playlists.append(playlist)
|
playlists.append(pl)
|
||||||
|
|
||||||
return {"data": playlists}
|
return {"data": playlists}
|
||||||
|
|
||||||
@ -30,24 +36,28 @@ def create_playlist():
|
|||||||
p_in_db = instances.playlist_instance.get_playlist_by_name(playlist["name"])
|
p_in_db = instances.playlist_instance.get_playlist_by_name(playlist["name"])
|
||||||
|
|
||||||
if p_in_db:
|
if p_in_db:
|
||||||
raise Exception("Playlist already exists.")
|
raise PlaylistExists("Playlist already exists.")
|
||||||
except Exception as e:
|
except PlaylistExists as e:
|
||||||
return {"error": str(e)}, 409
|
return {"error": str(e)}, 409
|
||||||
|
|
||||||
upsert_id = instances.playlist_instance.insert_playlist(playlist)
|
upsert_id = instances.playlist_instance.insert_playlist(playlist)
|
||||||
p = instances.playlist_instance.get_playlist_by_id(upsert_id)
|
p = instances.playlist_instance.get_playlist_by_id(upsert_id)
|
||||||
|
pp = models.Playlist(p)
|
||||||
|
|
||||||
api.PLAYLISTS.append(models.Playlist(p))
|
api.PLAYLISTS.append(pp)
|
||||||
|
|
||||||
return {"msg": "Playlist created successfully."}, 201
|
return {"playlist": pp}, 201
|
||||||
|
|
||||||
|
|
||||||
@playlist_bp.route("/playlist/<playlist_id>/add", methods=["POST"])
|
@playlist_bp.route("/playlist/<playlist_id>/add", methods=["POST"])
|
||||||
def add_track_to_playlist(playlist_id):
|
def add_track_to_playlist(playlist_id):
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
|
|
||||||
pid = data["playlist"]
|
|
||||||
trackid = data["track"]
|
trackid = data["track"]
|
||||||
|
|
||||||
playlistlib.add_track(pid, trackid)
|
try:
|
||||||
return 200
|
playlistlib.add_track(playlist_id, trackid)
|
||||||
|
except TrackExistsInPlaylist as e:
|
||||||
|
return {"error": str(e)}, 409
|
||||||
|
|
||||||
|
return {"msg": "I think It's done"}, 200
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
"""
|
"""
|
||||||
This library contains all the functions related to playlists.
|
This library contains all the functions related to playlists.
|
||||||
"""
|
"""
|
||||||
|
from progress.bar import Bar
|
||||||
|
from app import api, instances, models, exceptions, helpers
|
||||||
|
|
||||||
from app import api, instances, models
|
|
||||||
from app.lib import trackslib
|
from app.lib import trackslib
|
||||||
|
|
||||||
|
TrackExistsInPlaylist = exceptions.TrackExistsInPlaylist
|
||||||
|
|
||||||
|
|
||||||
def add_track(playlistid: str, trackid: str):
|
def add_track(playlistid: str, trackid: str):
|
||||||
"""
|
"""
|
||||||
@ -13,14 +16,23 @@ def add_track(playlistid: str, trackid: str):
|
|||||||
for playlist in api.PLAYLISTS:
|
for playlist in api.PLAYLISTS:
|
||||||
if playlist.playlistid == playlistid:
|
if playlist.playlistid == playlistid:
|
||||||
track = trackslib.get_track_by_id(trackid)
|
track = trackslib.get_track_by_id(trackid)
|
||||||
playlist.tracks.append(track)
|
|
||||||
|
|
||||||
instances.playlist_instance.add_track_to_playlist(playlistid, track)
|
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():
|
def create_all_playlists():
|
||||||
"""
|
"""
|
||||||
Gets all playlists from the database.
|
Gets all playlists from the database.
|
||||||
"""
|
"""
|
||||||
for playlist in instances.playlist_instance.get_all_playlists():
|
playlists = instances.playlist_instance.get_all_playlists()
|
||||||
|
|
||||||
|
_bar = Bar("Creating playlists", max=len(playlists))
|
||||||
|
for playlist in playlists:
|
||||||
api.PLAYLISTS.append(models.Playlist(playlist))
|
api.PLAYLISTS.append(models.Playlist(playlist))
|
||||||
|
_bar.next()
|
||||||
|
_bar.finish()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user