fix(qualys/search): KPI vuln_map est dict total/severityN, pas int

This commit is contained in:
Pierre & Lumière 2026-04-24 22:34:16 +00:00
parent 3c00f05263
commit 392c8f4fe5

View File

@ -468,13 +468,18 @@ async def qualys_search(request: Request, db=Depends(get_db),
# KPI : total / avec vuln / sans vuln + filtrage vuln_filter (with|zero) # KPI : total / avec vuln / sans vuln + filtrage vuln_filter (with|zero)
vuln_filter = request.query_params.get("vuln_filter", "") vuln_filter = request.query_params.get("vuln_filter", "")
def _vuln_total(a):
vc = vuln_map.get(str(a.ip_address), {})
if isinstance(vc, dict):
return int(vc.get("total", 0) or 0)
return int(vc or 0)
kpi_total = len(assets) if assets else 0 kpi_total = len(assets) if assets else 0
kpi_with_vuln = sum(1 for a in assets if vuln_map.get(str(a.ip_address), 0) > 0) if assets else 0 kpi_with_vuln = sum(1 for a in assets if _vuln_total(a) > 0) if assets else 0
kpi_zero_vuln = kpi_total - kpi_with_vuln kpi_zero_vuln = kpi_total - kpi_with_vuln
if assets and vuln_filter == "with": if assets and vuln_filter == "with":
assets = [a for a in assets if vuln_map.get(str(a.ip_address), 0) > 0] assets = [a for a in assets if _vuln_total(a) > 0]
elif assets and vuln_filter == "zero": elif assets and vuln_filter == "zero":
assets = [a for a in assets if vuln_map.get(str(a.ip_address), 0) == 0] assets = [a for a in assets if _vuln_total(a) == 0]
ctx = base_context(request, db, user) ctx = base_context(request, db, user)
ctx.update({ ctx.update({