Implement _current_playlist_addid

This commit is contained in:
Stein Magnus Jodal 2010-02-28 17:05:43 +01:00
parent 71fc316709
commit 54f538555c
2 changed files with 33 additions and 12 deletions

View File

@ -224,11 +224,9 @@ class MpdHandler(object):
Adds the file ``URI`` to the playlist (directories add recursively).
``URI`` can also be a single file.
"""
track = self.backend.library.lookup(uri)
if track is not None:
self.backend.current_playlist.add(track)
self._current_playlist_addid(uri)
@handle_pattern(r'^addid "(?P<uri>[^"]*)"( (?P<songpos>\d+))*$')
@handle_pattern(r'^addid "(?P<uri>[^"]*)"( "(?P<songpos>\d+)")*$')
def _current_playlist_addid(self, uri, songpos=None):
"""
*musicpd.org, current playlist section:*
@ -243,7 +241,12 @@ class MpdHandler(object):
Id: 999
OK
"""
raise MpdNotImplemented # TODO
if songpos is not None:
songpos = int(songpos)
track = self.backend.library.lookup(uri)
if track is not None:
self.backend.current_playlist.add(track, at_position=songpos)
return ('Id', track.id)
@handle_pattern(r'^delete "(?P<songpos>\d+)"$')
@handle_pattern(r'^delete "(?P<start>\d+):(?P<end>\d+)*"$')

View File

@ -496,19 +496,37 @@ class CurrentPlaylistHandlerTest(unittest.TestCase):
def test_add(self):
needle = Track(uri='dummy://foo')
self.b.library._library = [Track(), Track(), needle, Track()]
self.assertEquals(self.b.current_playlist.playlist.length, 0)
self.b.current_playlist.playlist = Playlist(
tracks=[Track(), Track(), Track(), Track(), Track()])
self.assertEquals(self.b.current_playlist.playlist.length, 5)
result = self.h.handle_request(u'add "dummy://foo"')
self.assertEquals(self.b.current_playlist.playlist.length, 1)
self.assert_(needle in self.b.current_playlist.playlist.tracks)
self.assertEquals(self.b.current_playlist.playlist.length, 6)
self.assertEquals(self.b.current_playlist.playlist.tracks[5], needle)
self.assert_(u'OK' in result)
def test_addid_without_songpos(self):
result = self.h.handle_request(u'addid "file:///dev/urandom"')
self.assert_(u'ACK Not implemented' in result)
needle = Track(uri='dummy://foo', id=137)
self.b.library._library = [Track(), Track(), needle, Track()]
self.b.current_playlist.playlist = Playlist(
tracks=[Track(), Track(), Track(), Track(), Track()])
self.assertEquals(self.b.current_playlist.playlist.length, 5)
result = self.h.handle_request(u'addid "dummy://foo"')
self.assertEquals(self.b.current_playlist.playlist.length, 6)
self.assertEquals(self.b.current_playlist.playlist.tracks[5], needle)
self.assert_(u'Id: 137' in result)
self.assert_(u'OK' in result)
def test_addid_with_songpos(self):
result = self.h.handle_request(u'addid "file:///dev/urandom" 0')
self.assert_(u'ACK Not implemented' in result)
needle = Track(uri='dummy://foo', id=137)
self.b.library._library = [Track(), Track(), needle, Track()]
self.b.current_playlist.playlist = Playlist(
tracks=[Track(), Track(), Track(), Track(), Track()])
self.assertEquals(self.b.current_playlist.playlist.length, 5)
result = self.h.handle_request(u'addid "dummy://foo" "3"')
self.assertEquals(self.b.current_playlist.playlist.length, 6)
self.assertEquals(self.b.current_playlist.playlist.tracks[3], needle)
self.assert_(u'Id: 137' in result)
self.assert_(u'OK' in result)
def test_clear(self):
result = self.h.handle_request(u'clear')