From 9df5af7cb45283f6acff33dacf4449c86f16674e Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Tue, 12 Dec 2023 05:58:05 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E2=80=94=20Better=20domains=20s?= =?UTF-8?q?orting=20on=20domain=20view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- argos/server/routes/views.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/argos/server/routes/views.py b/argos/server/routes/views.py index 807ecf4..23a545d 100644 --- a/argos/server/routes/views.py +++ b/argos/server/routes/views.py @@ -1,5 +1,6 @@ """Web interface for humans""" from collections import defaultdict +from functools import cmp_to_key from urllib.parse import urlparse from fastapi import APIRouter, Depends, Request @@ -50,7 +51,7 @@ async def get_severity_counts( @route.get("/details") async def read_tasks(request: Request, db: Session = Depends(get_db)): """Show all tasks and their current state""" - tasks = db.query(Task).order_by(Task.domain.desc()).all() + tasks = db.query(Task).all() results = ( db.query(Task, Result) @@ -71,9 +72,20 @@ async def read_tasks(request: Request, db: Session = Depends(get_db)): def _max_severity(severities): return max(severities, key=SEVERITY_LEVELS.get) + def _cmp_domains(a, b): + if SEVERITY_LEVELS[a[1]] < SEVERITY_LEVELS[b[1]]: + return 1 + if SEVERITY_LEVELS[a[1]] > SEVERITY_LEVELS[b[1]]: + return -1 + if a[0] > b[0]: + return 1 + if a[0] < b[0]: + return -1 + return 0 + domains = [(key, _max_severity(value)) for key, value in domains_severities.items()] last_checks = {key: max(value) for key, value in domains_last_checks.items()} - domains.sort(key=lambda x: SEVERITY_LEVELS[x[1]], reverse=True) + domains.sort(key=cmp_to_key(_cmp_domains)) agents = db.query(Result.agent_id).distinct().all()