Hugely simplify save_playlist
Don't try to work out how tracks may have moved. Instead, delete all track from current playlist and re-add them.
This commit is contained in:
parent
a4bdbfccd0
commit
4bae0b8548
@ -881,54 +881,15 @@ class Playlist(QTableWidget):
|
|||||||
)
|
)
|
||||||
Notes.update_note(session, note_id, playlist_notes[note_id])
|
Notes.update_note(session, note_id, playlist_notes[note_id])
|
||||||
|
|
||||||
# Now check tracks
|
# Tracks
|
||||||
# Create dictionaries indexed by row
|
# Remove all tracks for us in datbase
|
||||||
playlist_tracks = {}
|
PlaylistTracks.remove_all_tracks(session, self.db.id)
|
||||||
database_tracks = {}
|
# Iterate on-screen playlist and add tracks back in
|
||||||
|
|
||||||
# Playlist
|
|
||||||
for row in range(self.rowCount()):
|
for row in range(self.rowCount()):
|
||||||
if row in notes_rows:
|
if row in notes_rows:
|
||||||
continue
|
continue
|
||||||
playlist_tracks[row] = self._get_row_id(row)
|
PlaylistTracks.add_track(
|
||||||
|
session, self.db.id, self._get_row_id(row), row)
|
||||||
# Database
|
|
||||||
# Workaround for issue #10
|
|
||||||
# for track in self.db.tracks:
|
|
||||||
for track in us_in_db.tracks:
|
|
||||||
database_tracks[track.row] = track.track_id
|
|
||||||
|
|
||||||
# Tracks rows to add to database
|
|
||||||
for row in (
|
|
||||||
set(set(playlist_tracks.keys()) - set(database_tracks.keys()))
|
|
||||||
):
|
|
||||||
DEBUG(f"_save_playlist(): row {row} missing from database")
|
|
||||||
PlaylistTracks.add_track(session, self.db.id,
|
|
||||||
playlist_tracks[row], row)
|
|
||||||
|
|
||||||
# Track rows to remove from database
|
|
||||||
for row in (
|
|
||||||
set(database_tracks.keys()) - set(playlist_tracks.keys())
|
|
||||||
):
|
|
||||||
track = database_tracks[row]
|
|
||||||
DEBUG(
|
|
||||||
f"_save_playlist(): row {row} in database not playlist "
|
|
||||||
f"(track={track})"
|
|
||||||
)
|
|
||||||
PlaylistTracks.remove_track(session, self.db.id, row)
|
|
||||||
|
|
||||||
# Track rows to update in database
|
|
||||||
for row in (
|
|
||||||
set(playlist_tracks.keys()) & set(database_tracks.keys())
|
|
||||||
):
|
|
||||||
if playlist_tracks[row] != database_tracks[row]:
|
|
||||||
DEBUG(
|
|
||||||
"f_save_playlist(): Update row={row} in database for "
|
|
||||||
f"playlist {self} from track={database_tracks[row]} "
|
|
||||||
f"to track={playlist_tracks[row]}"
|
|
||||||
)
|
|
||||||
PlaylistTracks.update_row_track(
|
|
||||||
session, self.db.id, row, playlist_tracks[row])
|
|
||||||
|
|
||||||
def _set_column_widths(self):
|
def _set_column_widths(self):
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user