Fix move selected tracks
This commit is contained in:
parent
ebfdf98612
commit
976eb91e30
@ -6,7 +6,7 @@ import sys
|
|||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
|
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime
|
||||||
from log import DEBUG, EXCEPTION
|
from log import DEBUG, EXCEPTION
|
||||||
from typing import Callable, Dict, List, Optional, Tuple
|
from typing import Callable, Dict, List, Optional, Tuple
|
||||||
|
|
||||||
@ -32,7 +32,6 @@ from config import Config
|
|||||||
from models import (Base, Playdates, Playlists, PlaylistTracks,
|
from models import (Base, Playdates, Playlists, PlaylistTracks,
|
||||||
Settings, Tracks)
|
Settings, Tracks)
|
||||||
from playlists import PlaylistTab
|
from playlists import PlaylistTab
|
||||||
from utilities import create_track_from_file
|
|
||||||
from sqlalchemy.orm.exc import DetachedInstanceError
|
from sqlalchemy.orm.exc import DetachedInstanceError
|
||||||
from ui.dlg_search_database_ui import Ui_Dialog
|
from ui.dlg_search_database_ui import Ui_Dialog
|
||||||
from ui.dlg_SelectPlaylist_ui import Ui_dlgSelectPlaylist
|
from ui.dlg_SelectPlaylist_ui import Ui_dlgSelectPlaylist
|
||||||
@ -407,20 +406,25 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
visible_tab = self.visible_playlist_tab()
|
visible_tab = self.visible_playlist_tab()
|
||||||
visible_tab_id = visible_tab.playlist_id
|
visible_tab_id = visible_tab.playlist_id
|
||||||
|
|
||||||
playlists = [p for p in Playlists.get_all(session)
|
source_playlist = None
|
||||||
if p.id != visible_tab_id]
|
playlists = []
|
||||||
|
for playlist in Playlists.get_all(session):
|
||||||
|
if playlist.id == visible_tab_id:
|
||||||
|
source_playlist = playlist
|
||||||
|
else:
|
||||||
|
playlists.append(playlist)
|
||||||
|
|
||||||
|
# Get destination playlist id
|
||||||
dlg = SelectPlaylistDialog(self, playlists=playlists,
|
dlg = SelectPlaylistDialog(self, playlists=playlists,
|
||||||
session=session)
|
session=session)
|
||||||
dlg.exec()
|
dlg.exec()
|
||||||
if not dlg.plid:
|
if not dlg.playlist:
|
||||||
return
|
return
|
||||||
|
destination_playlist = dlg.playlist
|
||||||
|
|
||||||
# Update database for both source and destination playlists
|
# Update database for both source and destination playlists
|
||||||
rows = visible_tab.get_selected_rows()
|
rows = visible_tab.get_selected_rows()
|
||||||
for row in rows:
|
source_playlist.move_track(session, rows, destination_playlist)
|
||||||
PlaylistTracks.move_track(
|
|
||||||
session, visible_tab.playlist_id, row, dlg.plid
|
|
||||||
)
|
|
||||||
|
|
||||||
# Update destination playlist_tab if visible (if not visible, it
|
# Update destination playlist_tab if visible (if not visible, it
|
||||||
# will be re-populated when it is opened)
|
# will be re-populated when it is opened)
|
||||||
@ -429,13 +433,16 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
# Non-playlist tabs won't have a 'playlist_id' attribute
|
# Non-playlist tabs won't have a 'playlist_id' attribute
|
||||||
if not hasattr(self.tabPlaylist.widget(tab), 'playlist_id'):
|
if not hasattr(self.tabPlaylist.widget(tab), 'playlist_id'):
|
||||||
continue
|
continue
|
||||||
if self.tabPlaylist.widget(tab).playlist_id == dlg.plid:
|
if self.tabPlaylist.widget(tab).playlist_id == dlg.playlist.id:
|
||||||
destination_visible_playlist_tab = (
|
destination_visible_playlist_tab = (
|
||||||
self.tabPlaylist.widget(tab))
|
self.tabPlaylist.widget(tab))
|
||||||
break
|
break
|
||||||
|
|
||||||
if destination_visible_playlist_tab:
|
if destination_visible_playlist_tab:
|
||||||
destination_visible_playlist_tab.populate(session, dlg.plid)
|
# We need to commit to database for populate to work
|
||||||
|
session.commit()
|
||||||
|
destination_visible_playlist_tab.populate(
|
||||||
|
session, dlg.playlist.id)
|
||||||
|
|
||||||
# Update source playlist
|
# Update source playlist
|
||||||
self.visible_playlist_tab().remove_rows(rows)
|
self.visible_playlist_tab().remove_rows(rows)
|
||||||
@ -964,10 +971,15 @@ class SelectPlaylistDialog(QDialog):
|
|||||||
height = record.f_int or 600
|
height = record.f_int or 600
|
||||||
self.resize(width, height)
|
self.resize(width, height)
|
||||||
|
|
||||||
for (plid, plname) in [(a.id, a.name) for a in playlists]:
|
# for (plid, plname) in [(a.id, a.name) for a in playlists]:
|
||||||
|
# p = QListWidgetItem()
|
||||||
|
# p.setText(plname)
|
||||||
|
# p.setData(Qt.UserRole, plid)
|
||||||
|
# self.ui.lstPlaylists.addItem(p)
|
||||||
|
for playlist in playlists:
|
||||||
p = QListWidgetItem()
|
p = QListWidgetItem()
|
||||||
p.setText(plname)
|
p.setText(playlist.name)
|
||||||
p.setData(Qt.UserRole, plid)
|
p.setData(Qt.UserRole, playlist)
|
||||||
self.ui.lstPlaylists.addItem(p)
|
self.ui.lstPlaylists.addItem(p)
|
||||||
|
|
||||||
def __del__(self): # review
|
def __del__(self): # review
|
||||||
@ -982,13 +994,13 @@ class SelectPlaylistDialog(QDialog):
|
|||||||
record.update(self.session, {'f_int': self.width()})
|
record.update(self.session, {'f_int': self.width()})
|
||||||
|
|
||||||
def list_doubleclick(self, entry): # review
|
def list_doubleclick(self, entry): # review
|
||||||
self.plid = entry.data(Qt.UserRole)
|
self.playlist = entry.data(Qt.UserRole)
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
def open(self): # review
|
def open(self): # review
|
||||||
if self.ui.lstPlaylists.selectedItems():
|
if self.ui.lstPlaylists.selectedItems():
|
||||||
item = self.ui.lstPlaylists.currentItem()
|
item = self.ui.lstPlaylists.currentItem()
|
||||||
self.plid = item.data(Qt.UserRole)
|
self.playlist = item.data(Qt.UserRole)
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ from models import (
|
|||||||
)
|
)
|
||||||
from dbconfig import Session
|
from dbconfig import Session
|
||||||
|
|
||||||
start_time_re = re.compile(r"@\d\d:\d\d\:\d\d")
|
start_time_re = re.compile(r"@\d\d:\d\d:\d\d")
|
||||||
|
|
||||||
|
|
||||||
class RowMeta:
|
class RowMeta:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user