Handle signal_insert_track better.
This commit is contained in:
parent
6496ea2ac4
commit
a0ded4b73d
@ -96,7 +96,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
self.signals.signal_add_track_to_header.connect(self.add_track_to_header)
|
self.signals.signal_add_track_to_header.connect(self.add_track_to_header)
|
||||||
self.signals.signal_begin_insert_rows.connect(self.begin_insert_rows)
|
self.signals.signal_begin_insert_rows.connect(self.begin_insert_rows)
|
||||||
self.signals.signal_end_insert_rows.connect(self.end_insert_rows)
|
self.signals.signal_end_insert_rows.connect(self.end_insert_rows)
|
||||||
self.signals.signal_insert_track.connect(self.insert_row)
|
self.signals.signal_insert_track.connect(self.insert_row_signal_handler)
|
||||||
self.signals.signal_playlist_selected_rows.connect(self.set_selected_rows)
|
self.signals.signal_playlist_selected_rows.connect(self.set_selected_rows)
|
||||||
self.signals.signal_set_next_row.connect(self.set_next_row)
|
self.signals.signal_set_next_row.connect(self.set_next_row)
|
||||||
self.signals.signal_track_started.connect(self.track_started)
|
self.signals.signal_track_started.connect(self.track_started)
|
||||||
@ -682,11 +682,14 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
self.invalidate_row(row_number, roles)
|
self.invalidate_row(row_number, roles)
|
||||||
|
|
||||||
# @log_call
|
# @log_call
|
||||||
def insert_row(self, row_data: InsertTrack) -> None:
|
def insert_row_signal_handler(self, row_data: InsertTrack) -> None:
|
||||||
"""
|
"""
|
||||||
Insert a row.
|
Handle the signal_insert_track signal
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if row_data.playlist_id != self.playlist_id:
|
||||||
|
return
|
||||||
|
|
||||||
new_row_number = self._get_new_row_number()
|
new_row_number = self._get_new_row_number()
|
||||||
|
|
||||||
super().beginInsertRows(QModelIndex(), new_row_number, new_row_number)
|
super().beginInsertRows(QModelIndex(), new_row_number, new_row_number)
|
||||||
@ -1464,7 +1467,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
]
|
]
|
||||||
self.invalidate_rows(track_rows, roles)
|
self.invalidate_rows(track_rows, roles)
|
||||||
else:
|
else:
|
||||||
self.insert_row(
|
self.insert_row_signal_handler(
|
||||||
InsertTrack(playlist_id=self.playlist_id, track_id=track_id, note="")
|
InsertTrack(playlist_id=self.playlist_id, track_id=track_id, note="")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@ from app.helpers import get_all_track_metadata
|
|||||||
from app import ds, playlistmodel
|
from app import ds, playlistmodel
|
||||||
from app.models import db
|
from app.models import db
|
||||||
from classes import (
|
from classes import (
|
||||||
|
InsertTrack,
|
||||||
TrackAndPlaylist,
|
TrackAndPlaylist,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -39,7 +40,13 @@ class TestMMMiscTracks(unittest.TestCase):
|
|||||||
track_path = self.test_tracks[row % len(self.test_tracks)]
|
track_path = self.test_tracks[row % len(self.test_tracks)]
|
||||||
metadata = get_all_track_metadata(track_path)
|
metadata = get_all_track_metadata(track_path)
|
||||||
track = ds.track_create(metadata)
|
track = ds.track_create(metadata)
|
||||||
self.model.insert_row(track_id=track.track_id, note=f"{row=}")
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=track.track_id,
|
||||||
|
note=f"{row=}",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
db.drop_all()
|
db.drop_all()
|
||||||
@ -59,9 +66,21 @@ class TestMMMiscTracks(unittest.TestCase):
|
|||||||
|
|
||||||
# Fake selected row in model
|
# Fake selected row in model
|
||||||
self.model.selected_rows = [self.model.playlist_rows[START_ROW]]
|
self.model.selected_rows = [self.model.playlist_rows[START_ROW]]
|
||||||
self.model.insert_row(note="start+")
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note="start+"
|
||||||
|
)
|
||||||
|
)
|
||||||
self.model.selected_rows = [self.model.playlist_rows[END_ROW]]
|
self.model.selected_rows = [self.model.playlist_rows[END_ROW]]
|
||||||
self.model.insert_row(note="-")
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note="-+"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
prd = self.model.playlist_rows[START_ROW]
|
prd = self.model.playlist_rows[START_ROW]
|
||||||
qv_value = self.model._display_role(
|
qv_value = self.model._display_role(
|
||||||
@ -99,7 +118,13 @@ class TestMMMiscNoPlaylist(unittest.TestCase):
|
|||||||
track_path = self.test_tracks[0]
|
track_path = self.test_tracks[0]
|
||||||
metadata = get_all_track_metadata(track_path)
|
metadata = get_all_track_metadata(track_path)
|
||||||
track = ds.track_create(metadata)
|
track = ds.track_create(metadata)
|
||||||
model.insert_row(track_id=track.track_id)
|
model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=playlist.playlist_id,
|
||||||
|
track_id=track.track_id,
|
||||||
|
note="",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
prd = model.playlist_rows[model.rowCount() - 1]
|
prd = model.playlist_rows[model.rowCount() - 1]
|
||||||
# test repr
|
# test repr
|
||||||
@ -121,7 +146,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
self.playlist = ds.playlist_create(self.PLAYLIST_NAME, template_id=0)
|
self.playlist = ds.playlist_create(self.PLAYLIST_NAME, template_id=0)
|
||||||
self.model = playlistmodel.PlaylistModel(self.playlist.playlist_id, is_template=False)
|
self.model = playlistmodel.PlaylistModel(self.playlist.playlist_id, is_template=False)
|
||||||
for row in range(self.ROWS_TO_CREATE):
|
for row in range(self.ROWS_TO_CREATE):
|
||||||
self.model.insert_row(note=str(row))
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=str(row),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
db.drop_all()
|
db.drop_all()
|
||||||
@ -132,7 +163,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
note_text = "test text"
|
note_text = "test text"
|
||||||
|
|
||||||
assert self.model.rowCount() == self.ROWS_TO_CREATE
|
assert self.model.rowCount() == self.ROWS_TO_CREATE
|
||||||
self.model.insert_row(note=note_text)
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=note_text
|
||||||
|
)
|
||||||
|
)
|
||||||
assert self.model.rowCount() == self.ROWS_TO_CREATE + 1
|
assert self.model.rowCount() == self.ROWS_TO_CREATE + 1
|
||||||
prd = self.model.playlist_rows[self.model.rowCount() - 1]
|
prd = self.model.playlist_rows[self.model.rowCount() - 1]
|
||||||
# Test against edit_role because display_role for headers is
|
# Test against edit_role because display_role for headers is
|
||||||
@ -153,7 +190,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
# Fake selected row in model
|
# Fake selected row in model
|
||||||
self.model.selected_rows = [self.model.playlist_rows[insert_row]]
|
self.model.selected_rows = [self.model.playlist_rows[insert_row]]
|
||||||
|
|
||||||
self.model.insert_row(note=note_text)
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=note_text
|
||||||
|
)
|
||||||
|
)
|
||||||
assert self.model.rowCount() == self.ROWS_TO_CREATE + 1
|
assert self.model.rowCount() == self.ROWS_TO_CREATE + 1
|
||||||
prd = self.model.playlist_rows[insert_row]
|
prd = self.model.playlist_rows[insert_row]
|
||||||
# Test against edit_role because display_role for headers is
|
# Test against edit_role because display_role for headers is
|
||||||
@ -169,7 +212,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
note_text = "test text"
|
note_text = "test text"
|
||||||
insert_row = 6
|
insert_row = 6
|
||||||
|
|
||||||
self.model.insert_row(note=note_text)
|
self.model.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=self.playlist.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=note_text
|
||||||
|
)
|
||||||
|
)
|
||||||
assert self.model.rowCount() == self.ROWS_TO_CREATE + 1
|
assert self.model.rowCount() == self.ROWS_TO_CREATE + 1
|
||||||
|
|
||||||
# Fake selected row in model
|
# Fake selected row in model
|
||||||
@ -206,7 +255,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
playlist_dst.playlist_id, is_template=False
|
playlist_dst.playlist_id, is_template=False
|
||||||
)
|
)
|
||||||
for row in range(self.ROWS_TO_CREATE):
|
for row in range(self.ROWS_TO_CREATE):
|
||||||
model_dst.insert_row(note=str(row))
|
model_dst.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=playlist_dst.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=str(row)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
model_src.move_rows_between_playlists(from_rows, to_row, playlist_dst.playlist_id)
|
model_src.move_rows_between_playlists(from_rows, to_row, playlist_dst.playlist_id)
|
||||||
|
|
||||||
@ -227,7 +282,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
playlist_dst.playlist_id, is_template=False
|
playlist_dst.playlist_id, is_template=False
|
||||||
)
|
)
|
||||||
for row in range(self.ROWS_TO_CREATE):
|
for row in range(self.ROWS_TO_CREATE):
|
||||||
model_dst.insert_row(note=str(row))
|
model_dst.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=playlist_dst.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=str(row)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
model_src.move_rows_between_playlists(from_rows, to_row, playlist_dst.playlist_id)
|
model_src.move_rows_between_playlists(from_rows, to_row, playlist_dst.playlist_id)
|
||||||
|
|
||||||
@ -255,7 +316,13 @@ class TestMMMiscRowMove(unittest.TestCase):
|
|||||||
playlist_dst.playlist_id, is_template=False
|
playlist_dst.playlist_id, is_template=False
|
||||||
)
|
)
|
||||||
for row in range(self.ROWS_TO_CREATE):
|
for row in range(self.ROWS_TO_CREATE):
|
||||||
model_dst.insert_row(note=str(row))
|
model_dst.insert_row_signal_handler(
|
||||||
|
InsertTrack(
|
||||||
|
playlist_id=playlist_dst.playlist_id,
|
||||||
|
track_id=None,
|
||||||
|
note=str(row)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
model_src.move_rows_between_playlists(from_rows, to_row, playlist_dst.playlist_id)
|
model_src.move_rows_between_playlists(from_rows, to_row, playlist_dst.playlist_id)
|
||||||
|
|
||||||
|
|||||||
@ -99,7 +99,7 @@ class MyTestCase(unittest.TestCase):
|
|||||||
model = playlistmodel.PlaylistModel(playlist.playlist_id, is_template=False)
|
model = playlistmodel.PlaylistModel(playlist.playlist_id, is_template=False)
|
||||||
|
|
||||||
# Add a track with a note
|
# Add a track with a note
|
||||||
model.insert_row(track_id=self.track1.track_id, note=note_text)
|
model.insert_row_signal_handler(track_id=self.track1.track_id, note=note_text)
|
||||||
|
|
||||||
# Retrieve playlist
|
# Retrieve playlist
|
||||||
all_playlists = ds.playlists_all()
|
all_playlists = ds.playlists_all()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user