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
+34 -3
View File
@@ -1686,7 +1686,24 @@ def _filter_arr_release_results(results: Any) -> List[Dict[str, Any]]:
key = (item.get("indexerId"), item.get("guid"))
if not key[0] or not key[1] or key in seen:
continue
rejections = item.get("rejections")
if (
item.get("approved") is not True
or item.get("rejected") is True
or item.get("temporarilyRejected") is True
or item.get("downloadAllowed") is False
or isinstance(rejections, list) and bool(rejections)
):
continue
seen.add(key)
quality_payload = item.get("quality")
quality_name = None
if isinstance(quality_payload, dict):
quality_value = quality_payload.get("quality")
if isinstance(quality_value, dict):
quality_name = str(quality_value.get("name") or "").strip() or None
elif isinstance(quality_payload.get("name"), str):
quality_name = quality_payload["name"].strip() or None
keep.append(
{
"title": item.get("title"),
@@ -1708,9 +1725,14 @@ def _filter_arr_release_results(results: Any) -> List[Dict[str, Any]]:
"downloadAllowed": item.get("downloadAllowed"),
"fullSeason": item.get("fullSeason"),
"seasonNumber": item.get("seasonNumber"),
"quality": quality_name,
"customFormatScore": item.get("customFormatScore"),
}
)
return keep[:30]
releases = keep[:30]
for index, release in enumerate(releases):
release["bestPick"] = index == 0
return releases
def _build_release_push_payload(payload: Dict[str, Any]) -> Optional[Dict[str, Any]]:
@@ -3210,9 +3232,18 @@ async def action_search(request_id: str, user: Dict[str, str] = Depends(get_curr
"search_releases",
"Search and choose a download",
"ok",
f"{collector} found {len(releases)} releases.",
f"{collector} approved {len(releases)} releases against its assigned quality profile.",
)
return {"status": "ok", "collector": collector, "releases": releases}
return {
"status": "ok",
"collector": collector,
"qualityFiltered": True,
"message": (
f"{collector} approved {len(releases)} release{'s' if len(releases) != 1 else ''} "
"against its assigned quality profile."
),
"releases": releases,
}
@router.post("/{request_id}/actions/search_auto")