core: Add play(tlid) support

This commit is contained in:
Thomas Adamcik 2015-04-22 20:55:51 +02:00
parent c996072040
commit a62293c316
3 changed files with 40 additions and 3 deletions

View File

@ -265,18 +265,32 @@ class PlaybackController(object):
self.set_state(PlaybackState.PAUSED)
self._trigger_track_playback_paused()
def play(self, tl_track=None):
def play(self, tl_track=None, tlid=None):
"""
Play the given track, or if the given track is :class:`None`, play the
currently active track.
:param tl_track: track to play
:type tl_track: :class:`mopidy.models.TlTrack` or :class:`None`
:param tlid: TLID of the track to play
:type tlid: :class:`int` or :class:`None`
"""
tl_track is None or validation.check_instance(tl_track, models.TlTrack)
self._play(tl_track, on_error_step=1)
tlid is None or validation.check_integer(tlid, min=0)
# TODO: check one of or none for args
if tl_track:
deprecation.warn('core.playback.play:tl_track_kwarg', pending=True)
self._play(tl_track=tl_track, tlid=tlid, on_error_step=1)
def _play(self, tl_track=None, tlid=None, on_error_step=1):
if tl_track is None and tlid is not None:
for tl_track in self.core.tracklist.get_tl_tracks():
if tl_track.tlid == tlid:
break
else:
tl_track = None
def _play(self, tl_track=None, on_error_step=1):
if tl_track is None:
if self.get_state() == PlaybackState.PAUSED:
return self.resume()

View File

@ -30,6 +30,9 @@ _MESSAGES = {
'core.playback.set_mute': 'playback.set_mute() is deprecated',
'core.playback.get_volume': 'playback.get_volume() is deprecated',
'core.playback.set_volume': 'playback.set_volume() is deprecated',
'core.playback.play:tl_track_kwargs':
'playback.play() with "tl_track" argument is pending deprecation use '
'"tlid" instead',
# Deprecated features in core playlists:
'core.playlists.filter': 'playlists.filter() is deprecated',

View File

@ -8,6 +8,7 @@ import pykka
from mopidy import backend, core
from mopidy.models import Track
from mopidy.utils import deprecation
from tests import dummy_audio as audio
@ -698,3 +699,22 @@ class CorePlaybackWithOldBackendTest(unittest.TestCase):
c = core.Core(mixer=None, backends=[b])
c.tracklist.add(uris=['dummy1:a'])
c.playback.play() # No TypeError == test passed.
class TestPlay(unittest.TestCase):
def setUp(self): # noqa: N802
self.backend = mock.Mock()
self.backend.uri_schemes.get.return_value = ['dummy']
self.core = core.Core(backends=[self.backend])
self.tracks = [Track(uri='dummy:a', length=1234),
Track(uri='dummy:b', length=1234)]
with deprecation.ignore('core.tracklist.add:tracks_arg'):
self.tl_tracks = self.core.tracklist.add(tracks=self.tracks)
def test_play_tlid(self):
self.core.playback.play(tlid=self.tl_tracks[1].tlid)
self.backend.playback.change_track.assert_called_once_with(
self.tl_tracks[1].track)