db: Give playlists a delete() function
So we can remove playlists from the database when needed. Implemets: Issue #29 (Give playlists a delete() function) Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
2aad28f708
commit
6f9fb34792
|
@ -22,6 +22,8 @@ class Album(playlist.ParentPlaylist):
|
|||
@GObject.Property
|
||||
def name(self): return self._name
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
def find_disc(self, number, subtitle):
|
||||
return self.find_child(number, subtitle)
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ class Artist(playlist.ParentPlaylist):
|
|||
@GObject.Property
|
||||
def name(self): return self._name
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
def find_album(self, name): return self.find_child(name)
|
||||
|
||||
def get_child_table(self): return album.Table
|
||||
|
|
|
@ -20,8 +20,8 @@ class Decade(playlist.ParentPlaylist):
|
|||
@GObject.Property
|
||||
def name(self): return f"{self._decade}s"
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
def find_year(self, yr): return self.find_child(yr)
|
||||
|
||||
def get_child_table(self): return year.Table
|
||||
def lookup_child(self, yr): return year.Table.lookup(yr)
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@ class Disc(playlist.Playlist):
|
|||
self._number = row["number"]
|
||||
self._subtitle = row["subtitle"]
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
@GObject.Property
|
||||
def name(self):
|
||||
if self._subtitle:
|
||||
|
|
|
@ -25,6 +25,8 @@ class Genre(playlist.Playlist):
|
|||
playlist.Playlist.__init__(self, row, "emblem-generic")
|
||||
self._name = row["name"]
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
@GObject.Property
|
||||
def name(self): return self._name
|
||||
|
||||
|
|
|
@ -32,6 +32,8 @@ class Library(playlist.Playlist):
|
|||
sql.commit()
|
||||
self._enabled = newval
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
def tracks(self):
|
||||
cursor = sql.execute(f"SELECT trackid FROM tracks "
|
||||
"WHERE libraryid=?", [ self.rowid ])
|
||||
|
|
|
@ -11,6 +11,8 @@ class Playlist(GObject.GObject):
|
|||
self._plstate = state.Table.get(row["plstateid"])
|
||||
self._icon_name = icon_name
|
||||
|
||||
def delete(self): raise NotImplementedError
|
||||
|
||||
def has_children(self): return False
|
||||
|
||||
@GObject.Property
|
||||
|
|
|
@ -16,6 +16,12 @@ class TestAlbum(unittest.TestCase):
|
|||
self.assertEqual(album.get_property("icon-name"), "media-optical-cd-audio")
|
||||
self.assertEqual(album.get_child_table(), db.disc.Table)
|
||||
|
||||
def test_delete(self):
|
||||
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
||||
album = artist.find_album("Test Album")
|
||||
album.delete()
|
||||
self.assertIsNone(db.album.Table.lookup(artist, "Test Album"))
|
||||
|
||||
def test_find_disc(self):
|
||||
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
||||
album = artist.find_album("Test Album")
|
||||
|
|
|
@ -15,6 +15,11 @@ class TestArtist(unittest.TestCase):
|
|||
self.assertEqual(artist.get_property("icon-name"), "avatar-default-symbolic")
|
||||
self.assertEqual(artist.get_child_table(), db.album.Table)
|
||||
|
||||
def test_delete(self):
|
||||
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
||||
artist.delete()
|
||||
self.assertIsNone(db.artist.Table.lookup("Test Artist"))
|
||||
|
||||
def test_find_album(self):
|
||||
artist = db.artist.Table.find("Test Artist", "Test Sort")
|
||||
album = artist.find_album("Test Album")
|
||||
|
|
|
@ -23,6 +23,11 @@ class TestDecade(unittest.TestCase):
|
|||
self.assertEqual(decade._decade, 2020)
|
||||
self.assertEqual(decade.get_property("decade"), 2020)
|
||||
|
||||
def test_delete(self):
|
||||
decade = db.decade.Table.find(2020)
|
||||
decade.delete()
|
||||
self.assertIsNone(db.decade.Table.lookup(2020))
|
||||
|
||||
def test_find_year(self):
|
||||
decade = db.decade.Table.insert(2020)
|
||||
decade.connect("children-changed", self.children_changed)
|
||||
|
|
|
@ -18,6 +18,13 @@ class TestDisc(unittest.TestCase):
|
|||
self.assertEqual(disc.get_property("icon-name"), "media-optical")
|
||||
self.assertEqual(disc._number, 1)
|
||||
|
||||
def test_delete(self):
|
||||
artist = db.artist.Table.find("Test Artist", "Test Artist")
|
||||
album = artist.find_album("Test Album")
|
||||
disc = album.find_disc(1, "")
|
||||
disc.delete()
|
||||
self.assertIsNone(db.disc.Table.lookup(album, 1))
|
||||
|
||||
def test_subtitle(self):
|
||||
disc = self.make_disc("Test Artist", "Test Album", 1, "Test Subtitle")
|
||||
self.assertEqual(disc._subtitle, "Test Subtitle")
|
||||
|
|
|
@ -16,6 +16,11 @@ class TestGenre(unittest.TestCase):
|
|||
self.assertEqual(genre.get_property("name"), "Test Genre")
|
||||
self.assertEqual(genre.get_property("icon-name"), "emblem-generic")
|
||||
|
||||
def test_delete(self):
|
||||
genre = db.genre.Table.find("Test Genre")
|
||||
genre.delete()
|
||||
self.assertIsNone(db.genre.Table.lookup("Test Genre"))
|
||||
|
||||
|
||||
class TestGenreTable(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
@ -16,6 +16,11 @@ class TestLibrary(unittest.TestCase):
|
|||
self.assertEqual(library.get_property("name"), "/a/b/c")
|
||||
self.assertEqual(library.get_property("icon-name"), "folder-music")
|
||||
|
||||
def test_delete(self):
|
||||
library = db.library.Table.find(pathlib.Path("/a/b/c"))
|
||||
library.delete()
|
||||
self.assertIsNone(db.library.Table.lookup(pathlib.Path("/a/b/c")))
|
||||
|
||||
def test_path(self):
|
||||
library = db.library.Table.insert(pathlib.Path("/a/b/c"))
|
||||
self.assertIsInstance(library._path, pathlib.Path)
|
||||
|
|
|
@ -22,6 +22,8 @@ class TestPlaylist(unittest.TestCase):
|
|||
|
||||
with self.assertRaises(NotImplementedError):
|
||||
plist.get_property("name")
|
||||
with self.assertRaises(NotImplementedError):
|
||||
plist.delete()
|
||||
|
||||
|
||||
class TestParentPlaylist(unittest.TestCase):
|
||||
|
|
|
@ -47,6 +47,11 @@ class TestUserPlaylist(unittest.TestCase):
|
|||
self.assertEqual(plist.get_property("name"), "Test Playlist")
|
||||
self.assertEqual(plist.icon_name, "audio-x-generic")
|
||||
|
||||
def test_delete(self):
|
||||
plist = db.user.Table.find("Test Playlist")
|
||||
plist.delete()
|
||||
self.assertIsNone(db.user.Table.lookup("Test Playlist"))
|
||||
|
||||
|
||||
class TestUserTable(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
@ -16,6 +16,12 @@ class TestYear(unittest.TestCase):
|
|||
self.assertEqual(year.get_property("year"), 2021)
|
||||
self.assertEqual(year.get_property("icon-name"), "x-office-calendar")
|
||||
|
||||
def test_delete(self):
|
||||
decade = db.decade.Table.find(2020)
|
||||
year = decade.find_year(2021)
|
||||
year.delete()
|
||||
self.assertIsNone(db.year.Table.lookup(2021))
|
||||
|
||||
|
||||
class TestYearTable(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
@ -20,6 +20,8 @@ class UserPlaylist(playlist.Playlist):
|
|||
playlist.Playlist.__init__(self, row, icon_name)
|
||||
self._name = row["name"]
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
@GObject.Property
|
||||
def name(self): return self._name
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@ class Year(playlist.Playlist):
|
|||
playlist.Playlist.__init__(self, row, "x-office-calendar")
|
||||
self._year = row["year"]
|
||||
|
||||
def delete(self): Table.delete(self)
|
||||
|
||||
@GObject.Property
|
||||
def name(self): return str(self._year)
|
||||
|
||||
|
|
Loading…
Reference in New Issue