Ajout de statistiques simples & navbar
This commit is contained in:
parent
f9c1ff1b85
commit
ada9dcd7a3
33
app.py
33
app.py
@ -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() :
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
@ -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
26
templates/stats.html
Normal 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>
|
Loading…
Reference in New Issue
Block a user