Save of new style playlist implemented but not tested
This commit is contained in:
parent
7a14651bd7
commit
32e81fb074
@ -43,7 +43,7 @@ from sqlalchemy.orm.exc import (
|
|||||||
# leading_silence,
|
# leading_silence,
|
||||||
# trailing_silence,
|
# trailing_silence,
|
||||||
# )
|
# )
|
||||||
# from log import log.debug, log.error
|
from log import log
|
||||||
#
|
#
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
|
|
||||||
@ -442,7 +442,6 @@ class PlaylistRows(Base):
|
|||||||
f"note={self.note} row_number={self.row_number}>"
|
f"note={self.note} row_number={self.row_number}>"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# def __init__(
|
# def __init__(
|
||||||
# self, session: Session, playlist_id: int, track_id: int,
|
# self, session: Session, playlist_id: int, track_id: int,
|
||||||
# row: int) -> None:
|
# row: int) -> None:
|
||||||
@ -453,6 +452,42 @@ class PlaylistRows(Base):
|
|||||||
# self.row = row
|
# self.row = row
|
||||||
# session.add(self)
|
# session.add(self)
|
||||||
# session.flush()
|
# session.flush()
|
||||||
|
#
|
||||||
|
@staticmethod
|
||||||
|
def delete_higher_rows(session: Session, playlist_id: int, row: int) \
|
||||||
|
-> None:
|
||||||
|
"""
|
||||||
|
Delete rows in given playlist that have a higher row number
|
||||||
|
than 'row'
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Log the rows to be deleted
|
||||||
|
rows_to_go = session.execute(
|
||||||
|
select(PlaylistRows)
|
||||||
|
.where(PlaylistRows.playlist_id == playlist_id,
|
||||||
|
PlaylistRows.row_number > row)
|
||||||
|
).scalars().all()
|
||||||
|
if not rows_to_go:
|
||||||
|
return
|
||||||
|
|
||||||
|
for row in rows_to_go:
|
||||||
|
log.debu(f"Should delete: {row}")
|
||||||
|
# If needed later:
|
||||||
|
# session.delete(row)
|
||||||
|
|
||||||
|
|
||||||
|
# @classmethod
|
||||||
|
# def get_playlist_rows(cls, playlist_id: int) -> \
|
||||||
|
# Optional[List["PlaylistRows"]]:
|
||||||
|
# """
|
||||||
|
# Return a list of PlaylistRows for passed playlist ordered by row
|
||||||
|
# """
|
||||||
|
#
|
||||||
|
# return session.execute(
|
||||||
|
# select(cls)
|
||||||
|
# .where(cls.playlist_id == playlist_id)
|
||||||
|
# .order_by(cls.row_number)
|
||||||
|
# ).scalars().all()
|
||||||
#
|
#
|
||||||
# @staticmethod
|
# @staticmethod
|
||||||
# def max_used_row(session: Session, playlist_id: int) -> Optional[int]:
|
# def max_used_row(session: Session, playlist_id: int) -> Optional[int]:
|
||||||
|
|||||||
@ -648,6 +648,28 @@ class PlaylistTab(QTableWidget):
|
|||||||
# KAE self.save_playlist(session)
|
# KAE self.save_playlist(session)
|
||||||
self.update_display(session)
|
self.update_display(session)
|
||||||
|
|
||||||
|
def save_playlist(self, session: Session) -> None:
|
||||||
|
"""
|
||||||
|
Save playlist to database
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Iteratate through playlist and check that the row in each
|
||||||
|
# playlist_row object is correct
|
||||||
|
for row in range(self.rowCount()):
|
||||||
|
plr = session.get(PlaylistRows, self._get_playlistrow_id(row))
|
||||||
|
# Set the row number (even if it's already correct)
|
||||||
|
if plr.row_number != row:
|
||||||
|
log.debug(
|
||||||
|
f"Updating PlaylistRow: {plr.row_number=}, {row=}"
|
||||||
|
)
|
||||||
|
plr.row_number = row
|
||||||
|
|
||||||
|
# Any rows in the database with a row_number higher that the
|
||||||
|
# current value of 'row' should not be there. Commit session
|
||||||
|
# first to ensure any changes made above are committed.
|
||||||
|
session.commit()
|
||||||
|
PlaylistRows.delete_higher_rows(session, self.playlist_id, row)
|
||||||
|
|
||||||
# def save_playlist(self, session) -> None:
|
# def save_playlist(self, session) -> None:
|
||||||
# """
|
# """
|
||||||
# Save playlist to database.
|
# Save playlist to database.
|
||||||
@ -1009,7 +1031,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
self._set_row_colour(
|
self._set_row_colour(
|
||||||
row, QColor(note_colour)
|
row, QColor(note_colour)
|
||||||
)
|
)
|
||||||
# Notes are always bold
|
# Section headers are always bold
|
||||||
self._set_row_bold(row)
|
self._set_row_bold(row)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user