diff --git a/src/mopidy_smartplaylists/web.py b/src/mopidy_smartplaylists/web.py index 5c7c96e..ef9e173 100644 --- a/src/mopidy_smartplaylists/web.py +++ b/src/mopidy_smartplaylists/web.py @@ -16,7 +16,6 @@ from mopidy_smartplaylists import frontend as sq_frontend from mopidy_smartplaylists.generators import ( build_album_mix, build_artist_mix, - build_decade_mix, build_genre_mix, build_instant_mix, build_smart_queue_tracks, @@ -27,50 +26,6 @@ from mopidy_smartplaylists.generators import ( logger = logging.getLogger(__name__) -class DecadeMixHandler(tornado.web.RequestHandler): - def initialize( - self, core: CoreProxy, prefix: str, uris: list[Uri] | None = None, - playlist_dir: str | None = None, - max_tracks: int = 0, max_per_album: int = 0, max_per_artist: int = 0, - ) -> None: - self.core = core - self.prefix = prefix - self.uris = uris - self.playlist_dir = playlist_dir - self.max_tracks = max_tracks - self.max_per_album = max_per_album - self.max_per_artist = max_per_artist - - def post(self) -> None: - data = json.loads(self.request.body) - decade = data.get("decade", "") - if not decade: - self.set_status(400) - self.write({"error": "Missing 'decade' in request body"}) - return - tracks = build_decade_mix( - self.core, decade, uris=self.uris, - max_tracks=self.max_tracks, max_per_album=self.max_per_album, - max_per_artist=self.max_per_artist, - ) - if not tracks: - self.write({"playlist": None, "tracks": 0}) - return - playlist = save_smart_playlist( - self.core, self.prefix, f"{decade}s Mix", tracks, - playlist_dir=self.playlist_dir, - ) - self.write( - { - "playlist": { - "name": playlist.name if playlist else None, - "uri": playlist.uri if playlist else None, - "tracks": len(tracks), - }, - } - ) - - class GenreMixHandler(tornado.web.RequestHandler): def initialize( self, core: CoreProxy, prefix: str, uris: list[Uri] | None = None, @@ -422,10 +377,6 @@ def app_factory(config: Config, core: CoreProxy) -> list[tuple]: max_per_artist = _parse_int(config, "max_per_artist", 0) return [ - (r"/decade", DecadeMixHandler, - {"core": core, "prefix": prefix, "uris": uris, "playlist_dir": playlist_dir, - "max_tracks": max_tracks, "max_per_album": max_per_album, - "max_per_artist": max_per_artist}), (r"/genre", GenreMixHandler, {"core": core, "prefix": prefix, "uris": uris, "playlist_dir": playlist_dir, "max_tracks": max_tracks, "max_per_album": max_per_album, diff --git a/tests/test_web.py b/tests/test_web.py index c8581aa..3a0915a 100644 --- a/tests/test_web.py +++ b/tests/test_web.py @@ -8,7 +8,6 @@ from mopidy.models import Playlist, Ref, Track from mopidy_smartplaylists.web import ( AlbumMixHandler, ArtistMixHandler, - DecadeMixHandler, GenreMixHandler, InstantMixHandler, RefreshHandler, @@ -50,63 +49,6 @@ class _HandlerTestBase: return handler_cls(app, request, **kwargs) -class TestDecadeMixHandler: - def test_missing_decade_returns_400(self): - app = tornado.web.Application( - [ - ( - r"/decade", - DecadeMixHandler, - {"core": mock.Mock(), "prefix": "[Smart]"}, - ), - ] - ) - request = tornado.httputil.HTTPServerRequest( - method="POST", - uri="/decade", - body=json.dumps({}).encode(), - connection=mock.Mock(), - headers=tornado.httputil.HTTPHeaders(), - ) - handler = DecadeMixHandler(app, request, core=mock.Mock(), prefix="[Smart]") - handler.set_status = mock.Mock() - handler.write = mock.Mock() - handler.post() - handler.set_status.assert_called_once_with(400) - - def test_success(self): - core = mock.Mock() - core.library.search.return_value.get.return_value = [ - mock.Mock(tracks=[Track(uri="dummy:1", name="T")]) - ] - core.playlists.lookup.return_value.get.return_value = None - core.playlists.save.return_value.get.return_value = Playlist( - name="[Smart] 1980s Mix", - uri="mopidy:smartplaylists:1980s_mix", - tracks=[Track(uri="dummy:1", name="T")], - ) - - app = tornado.web.Application( - [ - (r"/decade", DecadeMixHandler, {"core": core, "prefix": "[Smart]"}), - ] - ) - request = tornado.httputil.HTTPServerRequest( - method="POST", - uri="/decade", - body=json.dumps({"decade": "1980"}).encode(), - connection=mock.Mock(), - headers=tornado.httputil.HTTPHeaders(), - ) - handler = DecadeMixHandler(app, request, core=core, prefix="[Smart]") - handler._transforms = [] - handler.write = mock.Mock() - handler.post() - data = handler.write.call_args[0][0] - assert data["playlist"]["name"] == "[Smart] 1980s Mix" - assert data["playlist"]["tracks"] == 1 - - class TestGenreMixHandler: def test_missing_genre_returns_400(self): app = tornado.web.Application(