diff --git a/freqtrade/commands/deploy_ui.py b/freqtrade/commands/deploy_ui.py index a02315bfc..f9d4db6d3 100644 --- a/freqtrade/commands/deploy_ui.py +++ b/freqtrade/commands/deploy_ui.py @@ -61,14 +61,18 @@ def get_ui_download_url(version: str | None = None) -> tuple[str, str]: if version: tmp = [x for x in r if x["name"] == version] - if tmp: - latest_version = tmp[0]["name"] - assets = tmp[0].get("assets", []) - else: - raise ValueError("UI-Version not found.") else: - latest_version = r[0]["name"] - assets = r[0].get("assets", []) + tmp = [x for x in r if not x.get("prerelease")] + + if tmp: + # Ensure we have the latest version + if version is None: + tmp.sort(key=lambda x: x["created_at"], reverse=True) + latest_version = tmp[0]["name"] + assets = tmp[0].get("assets", []) + else: + raise ValueError("UI-Version not found.") + dl_url = "" if assets and len(assets) > 0: dl_url = assets[0]["browser_download_url"] diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 65a43b795..7e744bb14 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -711,7 +711,21 @@ def test_get_ui_download_url(mocker): response = MagicMock() response.json = MagicMock( side_effect=[ - [{"assets_url": "http://whatever.json", "name": "0.0.1"}], + [ + { + # Pre-release is ignored + "assets_url": "http://whatever.json", + "name": "0.0.2", + "created_at": "2024-02-01T00:00:00Z", + "prerelease": True, + }, + { + "assets_url": "http://whatever.json", + "name": "0.0.1", + "created_at": "2024-01-01T00:00:00Z", + "prerelease": False, + }, + ], [{"browser_download_url": "http://download.zip"}], ] ) @@ -729,11 +743,15 @@ def test_get_ui_download_url_direct(mocker): { "assets_url": "http://whatever.json", "name": "0.0.2", + "created_at": "2024-02-01T00:00:00Z", + "prerelease": False, "assets": [{"browser_download_url": "http://download22.zip"}], }, { "assets_url": "http://whatever.json", "name": "0.0.1", + "created_at": "2024-01-01T00:00:00Z", + "prerelease": False, "assets": [{"browser_download_url": "http://download1.zip"}], }, ]