curds: Add playlists for individual years

They show up nested under the corresponding decade playlist

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-24 09:04:17 -04:00
parent fb5477da57
commit 9ef6c865c6
2 changed files with 28 additions and 3 deletions

View File

@ -4,14 +4,23 @@ from . import playlist
from .. import notify
class DecadePlaylist(playlist.Playlist):
def __init__(self, track):
playlist.Playlist.__init__(self, track["date"], "x-office-calendar")
def __init__(self, track, icon):
playlist.Playlist.__init__(self, track["date"], icon)
def __normalize__(self, name):
if isinstance(name, int):
return f"{int(name / 10) * 10}s"
return name
def add(self, track):
playlist.Playlist.add(self, track)
ylist = self.lookup(str(track["date"]))
if ylist == None:
ylist = playlist.Playlist(str(track["date"]), self.icon)
self.insert_child(ylist)
ylist.add(track)
class DecadeNode(node.PlaylistNode):
def __init__(self):
node.PlaylistNode.__init__(self, "Decades", "x-office-calendar")
@ -25,7 +34,7 @@ class DecadeNode(node.PlaylistNode):
def new_track(self, track):
plist = self.lookup(track["date"])
if plist == None:
plist = DecadePlaylist(track)
plist = DecadePlaylist(track, self.icon)
self.insert_child(plist)
plist.add(track)

View File

@ -31,6 +31,13 @@ class TestDecadePlaylist(unittest.TestCase):
self.assertEqual(len(plist), 1)
self.assertEqual(plist[0], track1)
self.assertEqual(plist.n_children(), 1)
ylist = plist.nth_child(0)
self.assertEqual(ylist.name, "1973")
self.assertEqual(ylist.icon, "x-office-calendar")
self.assertEqual(len(ylist), 1)
self.assertEqual(ylist[0], track1)
track2 = tags.Track.lookup(os.path.join(test_library, test_album2))
self.assertEqual(dnode.n_children(), 2)
@ -44,6 +51,15 @@ class TestDecadePlaylist(unittest.TestCase):
self.assertEqual(dnode.n_children(), 2)
self.assertEqual(len(plist), 2)
self.assertEqual(plist.n_children(), 1)
ylist = plist.nth_child(0)
self.assertEqual(ylist.name, "1982")
self.assertEqual(ylist.icon, "x-office-calendar")
self.assertEqual(len(ylist), 2)
self.assertEqual(ylist[0], track2)
self.assertEqual(ylist[1], track3)
notify.cancel("new-track", dnode.new_track)
dnode.reset()
self.assertEqual(dnode.n_children(), 0)