Implement _current_playlist_addid
This commit is contained in:
parent
71fc316709
commit
54f538555c
@ -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+)*"$')
|
||||
|
||||
@ -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')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user