mirror of
https://framagit.org/framasoft/framaspace/argos.git
synced 2025-04-28 09:52:38 +02:00
🎨 — Use a POST request for automatic refresh
This commit is contained in:
parent
8fd45302d2
commit
24e7778fa5
4 changed files with 31 additions and 13 deletions
|
@ -1,9 +1,11 @@
|
|||
"""Web interface for humans"""
|
||||
from collections import defaultdict
|
||||
from functools import cmp_to_key
|
||||
from typing import Annotated
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from fastapi import APIRouter, Depends, Request
|
||||
from fastapi import APIRouter, Cookie, Depends, Form, Request, status
|
||||
from fastapi.responses import RedirectResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy.orm import Session
|
||||
|
@ -23,8 +25,8 @@ SEVERITY_LEVELS = {"ok": 1, "warning": 2, "critical": 3, "unknown": 4}
|
|||
async def get_severity_counts_view(
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
refresh: bool = False,
|
||||
delay: int = 15,
|
||||
auto_refresh_enabled: Annotated[bool, Cookie()] = False,
|
||||
auto_refresh_seconds: Annotated[int, Cookie()] = 15,
|
||||
):
|
||||
"""Shows the number of results per severity"""
|
||||
counts_dict = await queries.get_severity_counts(db)
|
||||
|
@ -37,8 +39,8 @@ async def get_severity_counts_view(
|
|||
"request": request,
|
||||
"counts_dict": counts_dict,
|
||||
"agents": agents,
|
||||
"refresh": refresh,
|
||||
"delay": delay,
|
||||
"auto_refresh_enabled": auto_refresh_enabled,
|
||||
"auto_refresh_seconds": auto_refresh_seconds,
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -151,3 +153,18 @@ async def get_agents_view(request: Request, db: Session = Depends(get_db)):
|
|||
return templates.TemplateResponse(
|
||||
"agents.html", {"request": request, "last_seen": last_seen}
|
||||
)
|
||||
|
||||
|
||||
@route.post("/refresh")
|
||||
async def set_refresh_cookies_view(
|
||||
request: Request,
|
||||
auto_refresh_enabled: Annotated[bool, Form()] = False,
|
||||
auto_refresh_seconds: Annotated[int, Form()] = 15,
|
||||
):
|
||||
response = RedirectResponse(
|
||||
request.url_for("get_severity_counts_view"),
|
||||
status_code=status.HTTP_303_SEE_OTHER,
|
||||
)
|
||||
response.set_cookie(key="auto_refresh_enabled", value=auto_refresh_enabled)
|
||||
response.set_cookie(key="auto_refresh_seconds", value=int(auto_refresh_seconds))
|
||||
return response
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible"
|
||||
content="IE=Edge">
|
||||
{% if refresh %}
|
||||
{% if auto_refresh_enabled %}
|
||||
<meta http-equiv="refresh"
|
||||
content="{{ delay }}">
|
||||
content="{{ auto_refresh_seconds }}">
|
||||
{% endif %}
|
||||
<link rel="stylesheet"
|
||||
href="{{ url_for('static', path='/styles.css') }}">
|
||||
|
|
|
@ -13,27 +13,27 @@
|
|||
<ul>
|
||||
<li>
|
||||
<input id="auto-refresh"
|
||||
name="refresh"
|
||||
name="auto_refresh_enabled"
|
||||
type="checkbox"
|
||||
form="refresh-form"
|
||||
{{ 'checked' if refresh }}>
|
||||
{{ 'checked' if auto_refresh_enabled }}>
|
||||
<label for="auto-refresh" class="inline-label">Auto-refresh</label>
|
||||
</li>
|
||||
<li>
|
||||
<label class="inline-label">
|
||||
Every <input id="refresh-delay"
|
||||
class="initial-width"
|
||||
name="delay"
|
||||
name="auto_refresh_seconds"
|
||||
type="number"
|
||||
form="refresh-form"
|
||||
min="1"
|
||||
value="{{ delay }}"> seconds
|
||||
value="{{ auto_refresh_seconds }}"> seconds
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<form id="refresh-form"
|
||||
method="get"
|
||||
action="{{ url_for('get_severity_counts_view') }}">
|
||||
method="post"
|
||||
action="{{ url_for('set_refresh_cookies_view') }}">
|
||||
<input type="Submit">
|
||||
</form>
|
||||
</li>
|
||||
|
|
|
@ -24,6 +24,7 @@ dependencies = [
|
|||
"Jinja2>=3.0,<4",
|
||||
"pydantic[email]>=2.4,<3",
|
||||
"pydantic-settings>=2.0,<3",
|
||||
"python-multipart>=0.0.9,<1",
|
||||
"pyyaml>=6.0,<7",
|
||||
"pyyaml-include>=1.3,<2",
|
||||
"sqlalchemy[asyncio]>=2.0,<3",
|
||||
|
|
Loading…
Reference in a new issue