Implement _current_playlist_delete

This commit is contained in:
Stein Magnus Jodal 2010-02-28 16:46:39 +01:00
parent b3826c86d6
commit 3dedb8ced3
2 changed files with 44 additions and 7 deletions

View File

@ -253,7 +253,24 @@ class MpdHandler(object):
Deletes a song from the playlist.
"""
raise MpdNotImplemented # TODO
try:
tracks = []
if songpos is not None:
songpos = int(songpos)
tracks = [
self.backend.current_playlist.playlist.tracks[songpos]]
elif start is not None:
start = int(start)
if end is not None:
end = int(end)
else:
end = self.backend.current_playlist.playlist.length
tracks = self.backend.current_playlist.playlist.tracks[
start:end]
for track in tracks:
self.backend.current_playlist.remove(track)
except IndexError, e:
raise MpdAckError(u'Position out of bounds')
@handle_pattern(r'^deleteid "(?P<songid>\d+)"$')
def _current_playlist_deleteid(self, songid):

View File

@ -510,16 +510,36 @@ class CurrentPlaylistHandlerTest(unittest.TestCase):
self.assert_(u'ACK Not implemented' in result)
def test_delete_songpos(self):
result = self.h.handle_request(u'delete "5"')
self.assert_(u'ACK Not implemented' in result)
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'delete "2"')
self.assertEquals(self.b.current_playlist.playlist.length, 4)
self.assert_(u'OK' in result)
def test_delete_open_range(self):
result = self.h.handle_request(u'delete "10:"')
self.assert_(u'ACK Not implemented' in result)
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'delete "1:"')
self.assertEquals(self.b.current_playlist.playlist.length, 1)
self.assert_(u'OK' in result)
def test_delete_closed_range(self):
result = self.h.handle_request(u'delete "10:20"')
self.assert_(u'ACK Not implemented' in result)
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'delete "1:3"')
self.assertEquals(self.b.current_playlist.playlist.length, 3)
self.assert_(u'OK' in result)
def test_delete_out_of_range(self):
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'delete "5"')
self.assertEquals(self.b.current_playlist.playlist.length, 5)
self.assert_(u'ACK Position out of bounds' in result)
def test_deleteid(self):
self.b.current_playlist.load(Playlist(tracks=[Track(id=0)]))