core: Reimplement get_playlists() using new backend API
This commit is contained in:
parent
4f3a0839b3
commit
bd2e4f7af0
@ -6,6 +6,7 @@ import urlparse
|
|||||||
import pykka
|
import pykka
|
||||||
|
|
||||||
from mopidy.core import listener
|
from mopidy.core import listener
|
||||||
|
from mopidy.models import Playlist
|
||||||
from mopidy.utils.deprecation import deprecated_property
|
from mopidy.utils.deprecation import deprecated_property
|
||||||
|
|
||||||
|
|
||||||
@ -62,13 +63,14 @@ class PlaylistsController(object):
|
|||||||
.. deprecated:: 1.0
|
.. deprecated:: 1.0
|
||||||
Use :meth:`as_list` and :meth:`get_items` instead.
|
Use :meth:`as_list` and :meth:`get_items` instead.
|
||||||
"""
|
"""
|
||||||
futures = [b.playlists.playlists
|
playlist_refs = self.as_list()
|
||||||
for b in self.backends.with_playlists.values()]
|
|
||||||
results = pykka.get_all(futures)
|
if include_tracks:
|
||||||
playlists = list(itertools.chain(*results))
|
playlists = [self.lookup(r.uri) for r in playlist_refs]
|
||||||
if not include_tracks:
|
return [pl for pl in playlists if pl is not None]
|
||||||
playlists = [p.copy(tracks=[]) for p in playlists]
|
else:
|
||||||
return playlists
|
return [
|
||||||
|
Playlist(uri=r.uri, name=r.name) for r in playlist_refs]
|
||||||
|
|
||||||
playlists = deprecated_property(get_playlists)
|
playlists = deprecated_property(get_playlists)
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -23,12 +23,12 @@ class PlaylistsTest(unittest.TestCase):
|
|||||||
self.sp1 = mock.Mock(spec=backend.PlaylistsProvider)
|
self.sp1 = mock.Mock(spec=backend.PlaylistsProvider)
|
||||||
self.sp1.as_list.return_value.get.return_value = [
|
self.sp1.as_list.return_value.get.return_value = [
|
||||||
self.plr1a, self.plr1b]
|
self.plr1a, self.plr1b]
|
||||||
self.sp1.playlists.get.return_value = [self.pl1a, self.pl1b]
|
self.sp1.lookup.return_value.get.side_effect = [self.pl1a, self.pl1b]
|
||||||
|
|
||||||
self.sp2 = mock.Mock(spec=backend.PlaylistsProvider)
|
self.sp2 = mock.Mock(spec=backend.PlaylistsProvider)
|
||||||
self.sp2.as_list.return_value.get.return_value = [
|
self.sp2.as_list.return_value.get.return_value = [
|
||||||
self.plr2a, self.plr2b]
|
self.plr2a, self.plr2b]
|
||||||
self.sp2.playlists.get.return_value = [self.pl2a, self.pl2b]
|
self.sp2.lookup.return_value.get.side_effect = [self.pl2a, self.pl2b]
|
||||||
|
|
||||||
self.backend1 = mock.Mock()
|
self.backend1 = mock.Mock()
|
||||||
self.backend1.uri_schemes.get.return_value = ['dummy1']
|
self.backend1.uri_schemes.get.return_value = ['dummy1']
|
||||||
@ -73,7 +73,7 @@ class PlaylistsTest(unittest.TestCase):
|
|||||||
self.assertFalse(self.sp2.delete.called)
|
self.assertFalse(self.sp2.delete.called)
|
||||||
|
|
||||||
def test_get_playlists_combines_result_from_backends(self):
|
def test_get_playlists_combines_result_from_backends(self):
|
||||||
result = self.core.playlists.playlists
|
result = self.core.playlists.get_playlists()
|
||||||
|
|
||||||
self.assertIn(self.pl1a, result)
|
self.assertIn(self.pl1a, result)
|
||||||
self.assertIn(self.pl1b, result)
|
self.assertIn(self.pl1b, result)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user