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
|
||||
|
||||
import copy
|
||||
|
||||
from mopidy import listener, models
|
||||
|
||||
|
||||
@ -263,7 +261,6 @@ class PlaylistsProvider(object):
|
||||
|
||||
def __init__(self, backend):
|
||||
self.backend = backend
|
||||
self._playlists = []
|
||||
|
||||
# TODO Replace playlists property with a get_playlists() method which
|
||||
# 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`.
|
||||
"""
|
||||
return copy.copy(self._playlists)
|
||||
return []
|
||||
|
||||
@playlists.setter # noqa
|
||||
def playlists(self, playlists):
|
||||
self._playlists = playlists
|
||||
raise NotImplementedError
|
||||
|
||||
def create(self, name):
|
||||
"""
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
from __future__ import absolute_import, division, unicode_literals
|
||||
|
||||
import copy
|
||||
import glob
|
||||
import logging
|
||||
import operator
|
||||
@ -20,8 +21,17 @@ class LocalPlaylistsProvider(backend.PlaylistsProvider):
|
||||
super(LocalPlaylistsProvider, self).__init__(*args, **kwargs)
|
||||
self._media_dir = self.backend.config['local']['media_dir']
|
||||
self._playlists_dir = self.backend.config['local']['playlists_dir']
|
||||
self._playlists = []
|
||||
self.refresh()
|
||||
|
||||
@property
|
||||
def playlists(self):
|
||||
return copy.copy(self._playlists)
|
||||
|
||||
@playlists.setter
|
||||
def playlists(self, playlists):
|
||||
self._playlists = playlists
|
||||
|
||||
def create(self, name):
|
||||
playlist = self._save_m3u(Playlist(name=name))
|
||||
old_playlist = self.lookup(playlist.uri)
|
||||
|
||||
@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
|
||||
|
||||
import unittest
|
||||
|
||||
from mopidy import models
|
||||
from mopidy import backend, models
|
||||
|
||||
from tests import dummy_backend
|
||||
|
||||
@ -28,3 +28,13 @@ class LibraryTest(unittest.TestCase):
|
||||
|
||||
expected = {'trackuri': []}
|
||||
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
|
||||
|
||||
import copy
|
||||
|
||||
import pykka
|
||||
|
||||
from mopidy import backend
|
||||
@ -85,6 +87,18 @@ class DummyPlaybackProvider(backend.PlaybackProvider):
|
||||
|
||||
|
||||
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):
|
||||
playlist = Playlist(name=name, uri='dummy:%s' % name)
|
||||
self._playlists.append(playlist)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user