fix: remove subject filter from API URL (Russian chars), fetch all tickets and filter in code
This commit is contained in:
+10
-5
@@ -217,26 +217,31 @@ async def _find_existing_trueconf_ticket(cn: str, requester_email: str = None) -
|
||||
"""
|
||||
subject = "Запрос доступа к Trueconf"
|
||||
try:
|
||||
# Забираем все заявки с темой (без фильтра по статусу — проверяем в коде)
|
||||
url = f"{SD_URL.rstrip('/')}/api/v3/requests?filter=subject:{subject}&fields=id,subject,requester,status"
|
||||
# Забираем все заявки без фильтра — API v3 некорректно работает с русскими буквами в filter
|
||||
url = f"{SD_URL.rstrip('/')}/api/v3/requests?fields=id,subject,requester,status"
|
||||
headers = {"TECHNICIAN_KEY": SD_TOKEN}
|
||||
async with httpx.AsyncClient(verify=False) as client:
|
||||
resp = await client.get(url, headers=headers, timeout=10.0)
|
||||
if resp.status_code == 200:
|
||||
data = resp.json()
|
||||
requests_list = data.get("requests", [])
|
||||
logger.info(f"Found {len(requests_list)} tickets with subject='{subject}', searching for CN={cn}")
|
||||
logger.info(f"Found {len(requests_list)} total tickets, searching for CN={cn}")
|
||||
for req in requests_list:
|
||||
# Фильтруем по subject в коде
|
||||
if subject not in req.get("subject", ""):
|
||||
continue
|
||||
|
||||
req_status = req.get("status", {})
|
||||
status_name = req_status.get("name", "") if isinstance(req_status, dict) else str(req_status)
|
||||
req_id = req.get("id")
|
||||
req_name = req_status.get("requester", {}).get("name", "") if isinstance(req_status.get("requester"), dict) else ""
|
||||
logger.info(f"Ticket {req_id}: status={status_name}")
|
||||
|
||||
# Пропускаем закрытые заявки
|
||||
if status_name in ("Resolved", "Rejected", "Closed", "Solved"):
|
||||
logger.info(f"Skipping ticket {req_id}: status={status_name}")
|
||||
continue
|
||||
|
||||
logger.info(f"Checking ticket {req_id}: status={status_name}")
|
||||
|
||||
# Получаем детали заявки для поиска по описанию
|
||||
detail_url = f"{SD_URL.rstrip('/')}/api/v3/requests/{req_id}"
|
||||
detail_resp = await client.get(detail_url, headers=headers, timeout=10.0)
|
||||
|
||||
Reference in New Issue
Block a user