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 :
|
# Constantes :
|
||||||
MAX_DEPT = 5 # Le maximum de départements qu'il est possible de sélectionner
|
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_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
|
# Globales
|
||||||
logs = [] # Stoque les différentes requêtes faite sur la route /free_rooms/, sous la forme {"timestamp":timestamp,"depts":[]}
|
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")
|
url_for("static", filename="style.css")
|
||||||
return render_template("dept-select.html", **content)
|
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"])
|
@app.route("/app/free-rooms", methods=["POST", "GET"])
|
||||||
def free_rooms() :
|
def free_rooms() :
|
||||||
|
@ -17,12 +17,29 @@ body {
|
|||||||
header {
|
header {
|
||||||
background: var(--hl);
|
background: var(--hl);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 250%;
|
font-size: 150%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
text-align: center;
|
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 {
|
main {
|
||||||
margin: 15px;
|
margin: 15px;
|
||||||
display: flex;
|
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">
|
<div class="flex">
|
||||||
<button onClick="location.href='/app/date-select{{change_date_str}}'">Choisir une date</button>
|
<button onClick="location.href='/app/date-select{{change_date_str}}'">Choisir une date</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex">
|
|
||||||
<button onClick="location.href='/app'" type="button">Choisir des départements</button>
|
|
||||||
</div>
|
|
||||||
<h1>Disponibles maintenant</h1>
|
<h1>Disponibles maintenant</h1>
|
||||||
<div class="flex-container">
|
<div class="flex-container">
|
||||||
<ul>
|
<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