[web] Remove decade mix UI
This commit is contained in:
@ -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,
|
||||
|
||||
@ -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(
|
||||
|
||||
Reference in New Issue
Block a user