backend: Remove default impl of PlaylistProvider.playlists
The default was insane. For one, because overriding e.g. just the getter would make the property have a pair of working getter and setter that are entirely disconnected.
This commit is contained in:
parent
6273247c6e
commit
65c5242b14
@ -1,7 +1,5 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
import copy
|
|
||||||
|
|
||||||
from mopidy import listener, models
|
from mopidy import listener, models
|
||||||
|
|
||||||
|
|
||||||
@ -263,7 +261,6 @@ class PlaylistsProvider(object):
|
|||||||
|
|
||||||
def __init__(self, backend):
|
def __init__(self, backend):
|
||||||
self.backend = backend
|
self.backend = backend
|
||||||
self._playlists = []
|
|
||||||
|
|
||||||
# TODO Replace playlists property with a get_playlists() method which
|
# TODO Replace playlists property with a get_playlists() method which
|
||||||
# returns playlist Ref's instead of the gigantic data structures we
|
# returns playlist Ref's instead of the gigantic data structures we
|
||||||
@ -277,11 +274,11 @@ class PlaylistsProvider(object):
|
|||||||
|
|
||||||
Read/write. List of :class:`mopidy.models.Playlist`.
|
Read/write. List of :class:`mopidy.models.Playlist`.
|
||||||
"""
|
"""
|
||||||
return copy.copy(self._playlists)
|
return []
|
||||||
|
|
||||||
@playlists.setter # noqa
|
@playlists.setter # noqa
|
||||||
def playlists(self, playlists):
|
def playlists(self, playlists):
|
||||||
self._playlists = playlists
|
raise NotImplementedError
|
||||||
|
|
||||||
def create(self, name):
|
def create(self, name):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from __future__ import absolute_import, division, unicode_literals
|
from __future__ import absolute_import, division, unicode_literals
|
||||||
|
|
||||||
|
import copy
|
||||||
import glob
|
import glob
|
||||||
import logging
|
import logging
|
||||||
import operator
|
import operator
|
||||||
@ -20,8 +21,17 @@ class LocalPlaylistsProvider(backend.PlaylistsProvider):
|
|||||||
super(LocalPlaylistsProvider, self).__init__(*args, **kwargs)
|
super(LocalPlaylistsProvider, self).__init__(*args, **kwargs)
|
||||||
self._media_dir = self.backend.config['local']['media_dir']
|
self._media_dir = self.backend.config['local']['media_dir']
|
||||||
self._playlists_dir = self.backend.config['local']['playlists_dir']
|
self._playlists_dir = self.backend.config['local']['playlists_dir']
|
||||||
|
self._playlists = []
|
||||||
self.refresh()
|
self.refresh()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def playlists(self):
|
||||||
|
return copy.copy(self._playlists)
|
||||||
|
|
||||||
|
@playlists.setter
|
||||||
|
def playlists(self, playlists):
|
||||||
|
self._playlists = playlists
|
||||||
|
|
||||||
def create(self, name):
|
def create(self, name):
|
||||||
playlist = self._save_m3u(Playlist(name=name))
|
playlist = self._save_m3u(Playlist(name=name))
|
||||||
old_playlist = self.lookup(playlist.uri)
|
old_playlist = self.lookup(playlist.uri)
|
||||||
|
|||||||
@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from mopidy import models
|
from mopidy import backend, models
|
||||||
|
|
||||||
from tests import dummy_backend
|
from tests import dummy_backend
|
||||||
|
|
||||||
@ -28,3 +28,13 @@ class LibraryTest(unittest.TestCase):
|
|||||||
|
|
||||||
expected = {'trackuri': []}
|
expected = {'trackuri': []}
|
||||||
self.assertEqual(library.get_images(['trackuri']), expected)
|
self.assertEqual(library.get_images(['trackuri']), expected)
|
||||||
|
|
||||||
|
|
||||||
|
class PlaylistsTest(unittest.TestCase):
|
||||||
|
def test_playlists_default_impl(self):
|
||||||
|
playlists = backend.PlaylistsProvider(backend=None)
|
||||||
|
|
||||||
|
self.assertEqual(playlists.playlists, [])
|
||||||
|
|
||||||
|
with self.assertRaises(NotImplementedError):
|
||||||
|
playlists.playlists = []
|
||||||
|
|||||||
@ -6,6 +6,8 @@ used in tests of the frontends.
|
|||||||
|
|
||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
import copy
|
||||||
|
|
||||||
import pykka
|
import pykka
|
||||||
|
|
||||||
from mopidy import backend
|
from mopidy import backend
|
||||||
@ -85,6 +87,18 @@ class DummyPlaybackProvider(backend.PlaybackProvider):
|
|||||||
|
|
||||||
|
|
||||||
class DummyPlaylistsProvider(backend.PlaylistsProvider):
|
class DummyPlaylistsProvider(backend.PlaylistsProvider):
|
||||||
|
def __init__(self, backend):
|
||||||
|
super(DummyPlaylistsProvider, self).__init__(backend)
|
||||||
|
self._playlists = []
|
||||||
|
|
||||||
|
@property
|
||||||
|
def playlists(self):
|
||||||
|
return copy.copy(self._playlists)
|
||||||
|
|
||||||
|
@playlists.setter
|
||||||
|
def playlists(self, playlists):
|
||||||
|
self._playlists = playlists
|
||||||
|
|
||||||
def create(self, name):
|
def create(self, name):
|
||||||
playlist = Playlist(name=name, uri='dummy:%s' % name)
|
playlist = Playlist(name=name, uri='dummy:%s' % name)
|
||||||
self._playlists.append(playlist)
|
self._playlists.append(playlist)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user