handle gmpc issuing playid "-1" after playlst replacement

This commit is contained in:
Johannes Knutsen 2010-03-30 01:59:34 +02:00
parent ecfd774e64
commit 818e602221
2 changed files with 17 additions and 1 deletions

View File

@ -814,6 +814,7 @@ class MpdFrontend(object):
return self.backend.playback.play()
@handle_pattern(r'^playid "(?P<songid>\d+)"$')
@handle_pattern(r'^playid "(?P<songid>-1)"$')
def _playback_playid(self, songid):
"""
*musicpd.org, playback section:*
@ -821,10 +822,17 @@ class MpdFrontend(object):
``playid [SONGID]``
Begins playing the playlist at song ``SONGID``.
*GMPC:*
- issues ``playid "-1"`` after playlist replacement.
"""
songid = int(songid)
try:
track = self.backend.current_playlist.get_by_id(songid)
if songid == -1:
track = self.backend.current_playlist.playlist.tracks[0]
else:
track = self.backend.current_playlist.get_by_id(songid)
return self.backend.playback.play(track)
except KeyError as e:
raise MpdAckError(e[0])

View File

@ -465,6 +465,14 @@ class PlaybackControlHandlerTest(unittest.TestCase):
self.assert_(u'OK' in result)
self.assertEquals(self.b.playback.PLAYING, self.b.playback.state)
def test_playid_minus_one_plays_first_in_playlist(self):
track = Track(id=0)
self.b.current_playlist.load(Playlist(tracks=[track]))
result = self.h.handle_request(u'playid "-1"')
self.assert_(u'OK' in result)
self.assertEquals(self.b.playback.PLAYING, self.b.playback.state)
self.assertEquals(self.b.playback.current_track, track)
def test_playid_which_does_not_exist(self):
self.b.current_playlist.load(Playlist(tracks=[Track(id=0)]))
result = self.h.handle_request(u'playid "1"')