curds: Add a way to get parent playlists from the playlist manager

We can figure this out a little easier on the backend side, so let's
handle this there rather than on the UI side

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-02 09:14:21 -04:00
parent 71c77d0d09
commit 5a88fac10a
2 changed files with 23 additions and 0 deletions

View File

@ -73,6 +73,15 @@ class PlaylistManager(dict):
self["Previous"].add(self.track)
return self.track
def parent(self, child):
if child in self.values():
return self
if isinstance(child, genre.GenrePlaylist):
parent = self["Genre"]
elif isinstance(child, library.LibraryPlaylist):
parent = self["Library"]
return parent if child in parent else None
def previous(self):
self.track = self["Previous"].next()
return self.track

View File

@ -75,6 +75,13 @@ class TestPlaylistManager(unittest.TestCase):
self.assertEqual(self.playman["Library"].lookup(test_library + "/"), plist)
self.assertIsNone(self.playman["Library"].lookup("No such library"))
parent = self.playman.parent(plist)
self.assertEqual(parent, self.playman["Library"])
parent = self.playman.parent(alist)
self.assertEqual(parent, self.playman["Library"])
parent = self.playman.parent(self.playman["Library"])
self.assertEqual(parent, self.playman)
self.playman.reset()
self.assertEqual(len(self.playman["Library"]), 0)
@ -93,6 +100,13 @@ class TestPlaylistManager(unittest.TestCase):
self.assertEqual(plist.icon, "audio-x-generic-symbolic")
self.assertEqual(len(genreman), 5)
parent = self.playman.parent(plist)
self.assertEqual(parent, genreman)
parent = self.playman.parent(genre.GenrePlaylist("Other"))
self.assertEqual(parent, None)
parent = self.playman.parent(genreman)
self.assertEqual(parent, self.playman)
notify.cancel("new-track", genreman.add_track)
self.playman.reset()
self.assertEqual(len(genreman), 0)