Fix production ARR reads and add audited source field review
This commit is contained in:
1 parent
2417b1a41c
commit
fe8735aac2
26 files changed
+2417
-157
No files matched your search
+19
-1
@@ -14,7 +14,7 @@ from http.cookies import SimpleCookie
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Mapping, Optional
|
||||
from urllib.parse import parse_qs, urlsplit
|
||||
from urllib.parse import quote
|
||||
from urllib.parse import quote, unquote
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from arr_web.auth import LoginAttemptLedger, LoginCredentials
|
||||
@@ -364,6 +364,7 @@ class PortalApplication:
|
||||
if method == "GET" and route.path == "/api/arr-downloads":
|
||||
return Response.json(200, success({
|
||||
"ready": self._arr_downloads.ready,
|
||||
"context_id": getattr(self._arr_downloads, "context_id", None),
|
||||
"default_date": default_report_date(),
|
||||
"business_time_zone": "Asia/Bangkok",
|
||||
"latest_task": self._arr_download_snapshot(self._arr_downloads.latest()),
|
||||
@@ -386,6 +387,23 @@ class PortalApplication:
|
||||
if body and _strict_json(body):
|
||||
raise PortalError("ARR_DOWNLOAD_REQUEST_INVALID", "重试沿用原任务日期")
|
||||
return Response.json(202, success(self._arr_downloads.retry(request_id)))
|
||||
if len(parts) >= 2 and parts[1] == "data-review":
|
||||
if method == "GET" and len(parts) == 2:
|
||||
return Response.json(200, success(self._arr_downloads.get_data_review(request_id)))
|
||||
if method == "POST":
|
||||
self._require_csrf(normalized_headers)
|
||||
if len(body) > 16384:
|
||||
raise PortalError("REQUEST_TOO_LARGE", "请求内容过大", 413)
|
||||
payload = _strict_json(body)
|
||||
if type(payload.get("revision")) is not int or not 0 <= payload["revision"] <= 1000000:
|
||||
raise PortalError("ARR_DATA_REVIEW_INVALID", "人工完善版本号无效")
|
||||
if len(parts) == 4 and parts[2] == "items" and set(payload) == {"revision", "value"}:
|
||||
return Response.json(200, success(self._arr_downloads.update_data_review_item(
|
||||
request_id, unquote(parts[3]), payload["revision"], payload["value"], current_session[0])))
|
||||
if len(parts) == 3 and parts[2] == "finalize" and set(payload) == {"revision"}:
|
||||
return Response.json(202, success(self._arr_downloads.finalize_data_review(
|
||||
request_id, payload["revision"], current_session[0])))
|
||||
raise PortalError("ARR_DATA_REVIEW_INVALID", "人工完善请求无效")
|
||||
if method == "GET" and route.path == "/api/jobs":
|
||||
query = parse_qs(route.query, keep_blank_values=True)
|
||||
month = validate_month(self._one(query, "month", self._current_month()))
|
||||
|
||||
Reference in new issue
Block a user