Add a way to know when the last checks have been run

This commit is contained in:
Alexis Métaireau 2023-10-18 12:43:55 +02:00
parent dd2dc14351
commit 6338d7d9e6
2 changed files with 7 additions and 1 deletions

View file

@ -19,19 +19,23 @@ async def read_tasks(request: Request, db: Session = Depends(get_db)):
tasks = db.query(Task).order_by(Task.domain).all() tasks = db.query(Task).order_by(Task.domain).all()
domains_severities = defaultdict(list) domains_severities = defaultdict(list)
domains_last_checks = defaultdict(list)
for task in tasks: for task in tasks:
severity = task.severity or "to-process" severity = task.severity or "to-process"
domain = urlparse(task.url).netloc domain = urlparse(task.url).netloc
domains_severities[domain].append(severity) domains_severities[domain].append(severity)
domains_last_checks[domain].append(task.last_result.submitted_at)
def _max_severity(severities): def _max_severity(severities):
severity_level = {"ok": 1, "warning": 2, "critical": 3, "to-process": "4"} severity_level = {"ok": 1, "warning": 2, "critical": 3, "to-process": "4"}
return max(severities, key=severity_level.get) return max(severities, key=severity_level.get)
domains = {key: _max_severity(value) for key, value in domains_severities.items()} 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()}
return templates.TemplateResponse( return templates.TemplateResponse(
"index.html", {"request": request, "domains": domains} "index.html",
{"request": request, "domains": domains, "last_checks": last_checks},
) )

View file

@ -7,6 +7,7 @@
<tr> <tr>
<th>Domain</th> <th>Domain</th>
<th class="today">Current status</th> <th class="today">Current status</th>
<th>Last check</th>
</thead> </thead>
<tbody id="domains-body"> <tbody id="domains-body">
@ -18,6 +19,7 @@
</td> </td>
<td class="status highlight">{% if status == "ok" %}✅ OK {% elif statuts == "warning"%}⚠ Warning{% elif status == "critical"%}❌ Critical{% elif status == "to-process" %}⏱︎ Waiting for the jobs{% endif %}</td> <td class="status highlight">{% if status == "ok" %}✅ OK {% elif statuts == "warning"%}⚠ Warning{% elif status == "critical"%}❌ Critical{% elif status == "to-process" %}⏱︎ Waiting for the jobs{% endif %}</td>
<td>{{ last_checks.get(domain) }}</td>
</tr> </tr>
{% endfor %} {% endfor %}