Implement _current_playlist_delete
This commit is contained in:
parent
b3826c86d6
commit
3dedb8ced3
@ -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):
|
||||
|
||||
@ -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)]))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user