db: Make it easy to know if we can delete tracks from playlists

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-12-05 13:45:27 -05:00
parent 6913cf992d
commit 574d03bad6
3 changed files with 9 additions and 0 deletions

View File

@ -16,6 +16,7 @@ class Playlist(GObject.GObject):
def delete(self): raise NotImplementedError
def has_children(self): return False
def can_add_remove_tracks(self): return False
def get_n_tracks(self):
cur = sql.execute(f"SELECT COUNT(*) FROM tracks "
@ -154,6 +155,8 @@ class MappedPlaylist(Playlist):
@GObject.Property
def map_table(self): return self._map_table
def can_add_remove_tracks(self): return self._map_table == "playlist_map"
def add_track(self, track):
res = sql.execute(f"INSERT OR IGNORE INTO {self.map_table} "
f"({self.rowkey}, trackid) VALUES (?, ?)",

View File

@ -23,6 +23,7 @@ class TestPlaylist(unittest.TestCase):
self.assertIsInstance(plist, GObject.GObject)
self.assertFalse(plist.has_children())
self.assertFalse(plist.can_add_remove_tracks())
self.assertEqual(plist._rowid, 1)
self.assertEqual(plist._rowkey, "testid")

View File

@ -80,6 +80,7 @@ class TestFavorites(unittest.TestCase):
self.assertEqual(favorites.icon_name, "emmental-favorites")
self.assertEqual(favorites.map_table, "playlist_map")
self.assertFalse(favorites.plist_state.loop)
self.assertTrue(favorites.can_add_remove_tracks())
def test_add_remove_track(self):
favorites = db.user.Table.find("Favorites")
@ -121,6 +122,7 @@ class TestNewTracks(unittest.TestCase):
self.assertEqual(new.icon_name, "starred")
self.assertEqual(new.map_table, "temp_playlist_map")
self.assertFalse(new.plist_state.loop)
self.assertFalse(new.can_add_remove_tracks())
def test_add_remove_track(self):
new = db.user.Table.find("New Tracks")
@ -161,6 +163,7 @@ class TestPrevious(unittest.TestCase):
self.assertEqual(previous.map_table, "temp_playlist_map")
self.assertEqual(previous.plist_state.sort, [ "temp_playlist_map.rowid DESC" ])
self.assertFalse(previous.plist_state.loop)
self.assertFalse(previous.can_add_remove_tracks())
def test_add_remove_track(self):
previous = db.user.Table.find("Previous")
@ -255,6 +258,7 @@ class TestQueuedTracks(unittest.TestCase):
self.assertEqual(queued.map_table, "playlist_map")
self.assertEqual(queued.plist_state.sort, [ "playlist_map.rowid ASC" ])
self.assertFalse(queued.plist_state.loop)
self.assertTrue(queued.can_add_remove_tracks())
def test_add_remove_track(self):
queued = db.user.Table.find("Queued Tracks")
@ -310,6 +314,7 @@ class TestUserPlaylist(unittest.TestCase):
self.assertEqual(plist.icon_name, "audio-x-generic")
self.assertEqual(plist.map_table, "playlist_map")
self.assertFalse(plist.plist_state.loop)
self.assertTrue(plist.can_add_remove_tracks())
def test_delete(self):
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")