Use admin quality defaults throughout the request pipeline
This commit is contained in:
@@ -562,7 +562,6 @@ async def _resolve_request_destination(
|
||||
runtime: Any,
|
||||
seerr: JellyseerrClient,
|
||||
media_type: str,
|
||||
requested_profile_id: Optional[int] = None,
|
||||
) -> Dict[str, Any]:
|
||||
if media_type == "tv":
|
||||
collector_name = "Sonarr"
|
||||
@@ -601,16 +600,17 @@ async def _resolve_request_destination(
|
||||
raise HTTPException(status_code=409, detail=f"{collector_name} has no quality profiles available.")
|
||||
profile_ids = {int(item["id"]) for item in profiles}
|
||||
|
||||
default_profile_id = _quality_profile_id(server.get("activeProfileId"))
|
||||
# Magent's administrator default is authoritative for every new request.
|
||||
# An unset default inherits Seerr's profile; a stale default must be repaired.
|
||||
default_profile_id = configured_profile_id
|
||||
if default_profile_id is None:
|
||||
default_profile_id = _quality_profile_id(server.get("activeProfileId"))
|
||||
if default_profile_id not in profile_ids:
|
||||
default_profile_id = configured_profile_id if configured_profile_id in profile_ids else profiles[0]["id"]
|
||||
|
||||
selected_profile_id = requested_profile_id if requested_profile_id is not None else default_profile_id
|
||||
if selected_profile_id not in profile_ids:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail=f"The selected quality profile is not available in {collector_name}.",
|
||||
status_code=409,
|
||||
detail=f"The default quality profile is not available in {collector_name}. Ask an administrator to select a valid default in Admin settings.",
|
||||
)
|
||||
selected_profile_id = default_profile_id
|
||||
|
||||
roots = _normalize_request_roots(root_payload)
|
||||
root_folder = str(server.get("activeDirectory") or "").strip()
|
||||
@@ -3164,10 +3164,6 @@ async def create_request(
|
||||
raise HTTPException(status_code=400, detail="tmdbId must be a positive integer")
|
||||
|
||||
seasons = _normalize_seasons(payload.get("seasons")) if media_type == "tv" else []
|
||||
raw_profile_id = payload.get("profileId")
|
||||
profile_id = _quality_profile_id(raw_profile_id) if raw_profile_id is not None else None
|
||||
if raw_profile_id is not None and (profile_id is None or profile_id <= 0):
|
||||
raise HTTPException(status_code=400, detail="profileId must be a positive integer")
|
||||
raw_is_4k = payload.get("is4k")
|
||||
if raw_is_4k is not None and not isinstance(raw_is_4k, bool):
|
||||
raise HTTPException(status_code=400, detail="is4k must be true or false")
|
||||
@@ -3230,7 +3226,7 @@ async def create_request(
|
||||
detail=f"Season selection is not available for this series: {invalid_seasons}",
|
||||
)
|
||||
|
||||
destination = await _resolve_request_destination(runtime, client, media_type, profile_id)
|
||||
destination = await _resolve_request_destination(runtime, client, media_type)
|
||||
|
||||
try:
|
||||
created = await client.create_request(
|
||||
|
||||
Reference in New Issue
Block a user