Add quality-aware release picker modal
Magent CI/CD / verify (push) Canceled after 7m6s
Magent CI/CD / deploy-prod (push) Canceled after 0s
Magent CI/CD / deploy-beta (push) Canceled after 0s

This commit is contained in:
2026-09-01 22:02:22 +12:00
parent 2dbe11e6bc
commit 0ac53b7f59
4 changed files with 341 additions and 31 deletions
+45
View File
@@ -1124,6 +1124,18 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
"protocol": "torrent",
"fullSeason": True,
"seasonNumber": 1,
"approved": True,
"rejected": False,
"downloadAllowed": True,
"quality": {"quality": {"name": "WEBDL-1080p"}},
},
{
"title": "Example.Show.S01.2160p",
"guid": "outside-profile",
"indexerId": 7,
"approved": False,
"rejected": True,
"rejections": ["Quality is not wanted in profile"],
}
],
[],
@@ -1143,8 +1155,12 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
sonarr.search_releases.assert_any_await(42, 1)
sonarr.search_releases.assert_any_await(42, 2)
self.assertEqual(result["collector"], "Sonarr")
self.assertEqual(len(result["releases"]), 1)
self.assertTrue(result["releases"][0]["fullSeason"])
self.assertEqual(result["releases"][0]["seasonNumber"], 1)
self.assertEqual(result["releases"][0]["quality"], "WEBDL-1080p")
self.assertTrue(result["releases"][0]["bestPick"])
self.assertTrue(result["qualityFiltered"])
async def test_movie_manual_search_uses_radarr(self) -> None:
snapshot = Snapshot(
@@ -1163,6 +1179,9 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
"indexerId": 9,
"indexer": "Prowlarr",
"protocol": "torrent",
"approved": True,
"rejected": False,
"downloadAllowed": True,
}
]
),
@@ -1180,6 +1199,32 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
radarr.search_releases.assert_awaited_once_with(84)
self.assertEqual(result["collector"], "Radarr")
self.assertEqual(result["releases"][0]["guid"], "movie-release")
self.assertTrue(result["releases"][0]["bestPick"])
def test_manual_release_filter_requires_explicit_arr_approval(self) -> None:
releases = requests_router._filter_arr_release_results(
[
{"title": "Missing decision", "guid": "missing", "indexerId": 1},
{
"title": "Temporarily rejected",
"guid": "temporary",
"indexerId": 1,
"approved": True,
"temporarilyRejected": True,
},
{
"title": "Approved release",
"guid": "approved",
"indexerId": 1,
"approved": True,
"rejected": False,
"downloadAllowed": True,
},
]
)
self.assertEqual([release["guid"] for release in releases], ["approved"])
self.assertTrue(releases[0]["bestPick"])
async def test_tv_manual_grab_is_sent_to_sonarr_not_qbittorrent(self) -> None:
snapshot = Snapshot(