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])
|
||||
|
||||
# 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):
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user