Ajout de statistiques simples & navbar

This commit is contained in:
theo@manjaro 2022-06-14 11:53:17 +02:00
parent f9c1ff1b85
commit ada9dcd7a3
5 changed files with 89 additions and 5 deletions

33
app.py
View File

@ -27,6 +27,8 @@ import rooms_get as ro
# Constantes :
MAX_DEPT = 5 # Le maximum de départements qu'il est possible de sélectionner
MAX_LOG_DAYS = 30 # Le nombre de jours pendant lesquels les logs sont conservés
MAX_LOG_DEPT = 3 # Le nombre maximum affiché de départements qui ont été le plus cherché
PING_WARN = 5 # Nombre d'utilisations à partir du quel un message d'avertissement est affiché
# Globales
logs = [] # Stoque les différentes requêtes faite sur la route /free_rooms/, sous la forme {"timestamp":timestamp,"depts":[]}
@ -75,6 +77,37 @@ def select_dept() :
url_for("static", filename="style.css")
return render_template("dept-select.html", **content)
@app.route("/stats")
def stats():
"""
Statistiques d'utilisation de l'instance
Parameters
----------
None. (Reads from the global "logs")
Returns
-------
flask.render_template
"""
# Compte le nombre de fois que les différents départements ont été cherché
pings = 0
counts = {}
for log in logs:
for dept in log["depts"]:
pings+=1
if dept.name in counts.keys():
counts[dept.name]+=1
else:
counts[dept.name]=1
sort = [ [x,counts[x]] for x in counts.keys() ]
sort.sort(key = lambda x: x[1],reverse = True ) # Trie selon la valeur du deuxieme élément de la liste
context = {"MAX_LOG_DAYS":MAX_LOG_DAYS,"PING_WARN":PING_WARN,"depts":sort[:MAX_LOG_DEPT],"nbping":pings}
return render_template("stats.html",**context)
@app.route("/app/free-rooms", methods=["POST", "GET"])
def free_rooms() :

View File

@ -17,12 +17,29 @@ body {
header {
background: var(--hl);
display: inline-block;
font-size: 250%;
font-size: 150%;
width: 100%;
font-weight: lighter;
text-align: center;
}
header a {
padding-left: 40px;
padding-right: 40px;
padding-top: 5px;
padding-bottom: 5px;
color: var(--fg);
transition: color 0.1s;
}
header a:hover {
color: var(--bg);
}
.title {
font-size: 200%
}
main {
margin: 15px;
display: flex;

View File

@ -1 +1,12 @@
<div class="flex"><header><a href="/">UniSquat</a></header></div>
<header>
<div class="flex">
<a href="/" class="title">UniSquat</a>
</div>
<strong>
<div class="flex">
<a href="/app">Start</a>
<a href="/stats">Stats</a>
<a href="https://forge.chapril.org/Wantoo/UniSquat_Python">Source</a>
</div>
</strong>
</header>

View File

@ -17,9 +17,6 @@
<div class="flex">
<button onClick="location.href='/app/date-select{{change_date_str}}'">Choisir une date</button>
</div>
<div class="flex">
<button onClick="location.href='/app'" type="button">Choisir des départements</button>
</div>
<h1>Disponibles maintenant</h1>
<div class="flex-container">
<ul>

26
templates/stats.html Normal file
View File

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<title>UniSquat</title>
<link rel="stylesheet" type="text/css" href="../static/style.css">
<meta name="viewport" content="width=300, initial-scale=1" />
</head>
<body>
{% include "base.html" %}
<main>
<h1>Statistiques d'utilisation de l'instance</h1>
<p>Ces {{MAX_LOG_DAYS}} derniers jours, cette instance a recherché des salles {{nbping}} fois !</p>
{% if nbping>PING_WARN %}
<p>⚠ L'instance commence a être <strong>surchargée</strong>, considérez le fait d'en <a href="https://forge.chapril.org/Wantoo/UniSquat_Python">créer une vous même</a></p>
{% endif %}
<h1>Départements les plus demandés</h1>
<ul>
{% for dept in depts: %}
<li><strong>{{ dept[0] }}</strong> (demandé {{dept[1]}} fois)</li>
{% endfor %}
</ul>
</main>
{% include "footer.html" %}
</body>
</html>