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):