Reordered functions in model.Playlists

This commit is contained in:
Keith Edmunds 2021-06-04 15:43:35 +01:00
parent 403313c0dd
commit 52d48406ea

View File

@ -166,6 +166,64 @@ class Playlists(Base):
def __repr__(self): def __repr__(self):
return (f"<Playlist(id={self.id}, name={self.name}>") return (f"<Playlist(id={self.id}, name={self.name}>")
def add_track(self, session, track, row=None):
"""
Add track to playlist at given row.
If row=None, add to end of playlist
"""
if not row:
row = PlaylistTracks.new_row(session, self.id)
glue = PlaylistTracks(row=row)
glue.track_id = track.id
self.tracks.append(glue)
session.commit()
def close(self, session):
"Record playlist as no longer loaded"
self.loaded = False
session.add(self)
session.commit()
@staticmethod
def get_all_closed_playlists(session):
"Returns a list of all playlists not currently open"
return (
session.query(Playlists)
.filter(
(Playlists.loaded == False) | # noqa E712
(Playlists.loaded == None)
)
.order_by(Playlists.last_used.desc())
).all()
@staticmethod
def get_all_playlists(session):
"Returns a list of all playlists"
return session.query(Playlists).all()
@staticmethod
def get_last_used(session):
"""
Return a list of playlists marked "loaded", ordered by loaded date.
"""
return (
session.query(Playlists)
.filter(Playlists.loaded == True) # noqa E712
.order_by(Playlists.last_used.desc())
).all()
def get_notes(self):
return [a.note for a in self.notes]
def get_tracks(self):
return [a.tracks for a in self.tracks]
@staticmethod @staticmethod
def new(session, name): def new(session, name):
DEBUG(f"Playlists.new(name={name})") DEBUG(f"Playlists.new(name={name})")
@ -186,77 +244,6 @@ class Playlists(Base):
return p return p
def close(self, session):
"Record playlist as no longer loaded"
self.loaded = False
session.add(self)
session.commit()
@staticmethod
def get_last_used(session):
"""
Return a list of playlists marked "loaded", ordered by loaded date.
"""
return (
session.query(Playlists)
.filter(Playlists.loaded == True) # noqa E712
.order_by(Playlists.last_used.desc())
).all()
@staticmethod
def get_all_playlists(session):
"Returns a list of all playlists"
return session.query(Playlists).all()
@staticmethod
def get_all_closed_playlists(session):
"Returns a list of all playlists not currently open"
return (
session.query(Playlists)
.filter(
(Playlists.loaded == False) | # noqa E712
(Playlists.loaded == None)
)
.order_by(Playlists.last_used.desc())
).all()
# Not currently used 1 June 2021
# @staticmethod
# def get_name(session, plid):
# """
# Return name of playlist with id 'plid'
# """
# return (
# session.query(Playlists.name)
# .filter(Playlists.id == plid)
# ).one()[0]
def add_track(self, session, track, row=None):
"""
Add track to playlist at given row.
If row=None, add to end of playlist
"""
if not row:
row = PlaylistTracks.new_row(session, self.id)
glue = PlaylistTracks(row=row)
glue.track_id = track.id
self.tracks.append(glue)
session.commit()
def get_notes(self):
return [a.note for a in self.notes]
def get_tracks(self):
return [a.tracks for a in self.tracks]
class PlaylistTracks(Base): class PlaylistTracks(Base):
__tablename__ = 'playlisttracks' __tablename__ = 'playlisttracks'
@ -267,13 +254,6 @@ class PlaylistTracks(Base):
tracks = relationship("Tracks", back_populates="playlists") tracks = relationship("Tracks", back_populates="playlists")
playlists = relationship("Playlists", back_populates="tracks") playlists = relationship("Playlists", back_populates="tracks")
@staticmethod
def new_row(session, playlist_id):
"Return row number > largest existing row number"
last_row = session.query(func.max(PlaylistTracks.row)).one()[0]
return last_row + 1
@staticmethod @staticmethod
def add_track(session, playlist_id, track_id, row): def add_track(session, playlist_id, track_id, row):
DEBUG( DEBUG(