diff --git a/db/playlist.py b/db/playlist.py index e1e68e1..ec5461b 100644 --- a/db/playlist.py +++ b/db/playlist.py @@ -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 (?, ?)", diff --git a/db/test_playlist.py b/db/test_playlist.py index 23e0961..310c33d 100644 --- a/db/test_playlist.py +++ b/db/test_playlist.py @@ -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") diff --git a/db/test_user.py b/db/test_user.py index 6e24a19..ed889e2 100644 --- a/db/test_user.py +++ b/db/test_user.py @@ -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")