[web] Remove decade mix UI

This commit is contained in:
2026-06-26 12:59:47 -04:00
parent a3b925e3f3
commit b6c2066b91
2 changed files with 0 additions and 107 deletions

View File

@ -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,

View File

@ -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(