From 4bae0b8548bc5000564da32d0bdf328b1aceb1d8 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Fri, 4 Jun 2021 15:45:29 +0100 Subject: [PATCH] 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. --- app/playlists.py | 51 ++++++------------------------------------------ 1 file changed, 6 insertions(+), 45 deletions(-) diff --git a/app/playlists.py b/app/playlists.py index 7168e7c..57d864e 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -881,54 +881,15 @@ class Playlist(QTableWidget): ) Notes.update_note(session, note_id, playlist_notes[note_id]) - # Now check tracks - # Create dictionaries indexed by row - playlist_tracks = {} - database_tracks = {} - - # Playlist + # Tracks + # Remove all tracks for us in datbase + PlaylistTracks.remove_all_tracks(session, self.db.id) + # Iterate on-screen playlist and add tracks back in for row in range(self.rowCount()): if row in notes_rows: continue - playlist_tracks[row] = self._get_row_id(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]) + PlaylistTracks.add_track( + session, self.db.id, self._get_row_id(row), row) def _set_column_widths(self):