Les logs sont maintenant stockés dans un fichier json
This commit is contained in:
parent
b781ebe8cf
commit
31aaeca2e2
3
.gitignore
vendored
3
.gitignore
vendored
@ -2,4 +2,5 @@ __pycache__/
|
|||||||
*.py[cod]
|
*.py[cod]
|
||||||
*$py.class
|
*$py.class
|
||||||
cache/
|
cache/
|
||||||
push_to_server.sh
|
push_to_server.sh
|
||||||
|
log.json
|
||||||
|
24
app.py
24
app.py
@ -14,6 +14,8 @@
|
|||||||
# Modules :
|
# Modules :
|
||||||
import datetime as dti
|
import datetime as dti
|
||||||
import pytz
|
import pytz
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
@ -30,6 +32,7 @@ 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é
|
MAX_LOG_DEPT = 3 # Le nombre maximum affiché de départements qui ont été le plus cherché
|
||||||
PING_WARN = 500 # Nombre d'utilisations à partir du quel un message d'avertissement est affiché
|
PING_WARN = 500 # Nombre d'utilisations à partir du quel un message d'avertissement est affiché
|
||||||
|
LOG_FILE = "log.json" # Contient des stats sur les salles les plus mises en favoris, et les départements
|
||||||
GLOBAL_CONTEXT = {} # Contexte constant pour les templates Jinja
|
GLOBAL_CONTEXT = {} # Contexte constant pour les templates Jinja
|
||||||
GLOBAL_CONTEXT["SOURCE"] = "https://forge.chapril.org/Wantoo/UniSquat_Python" # Le lien du code source
|
GLOBAL_CONTEXT["SOURCE"] = "https://forge.chapril.org/Wantoo/UniSquat_Python" # Le lien du code source
|
||||||
GLOBAL_CONTEXT["CREDITSLINK"] = "https://forge.chapril.org/Wantoo" # Le lien de l'organisation
|
GLOBAL_CONTEXT["CREDITSLINK"] = "https://forge.chapril.org/Wantoo" # Le lien de l'organisation
|
||||||
@ -38,12 +41,19 @@ GLOBAL_CONTEXT["DEBUG"] = False # Fait en sorte que le logiciel soit un peu plus
|
|||||||
GLOBAL_CONTEXT["DOMAIN"] = "https://unisquat.alwaysdata.net" # Le domaine sur lequel est host l'instance
|
GLOBAL_CONTEXT["DOMAIN"] = "https://unisquat.alwaysdata.net" # Le domaine sur lequel est host l'instance
|
||||||
|
|
||||||
# Globales
|
# Globales
|
||||||
logs = [] # Stoque les différentes requêtes faite sur la route /free_rooms/, sous la forme {"timestamp":timestamp,"depts":[]}
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
logs = [] # Stoque les différentes requêtes faite sur la route /free_rooms/, sous la forme {"timestamp":timestamp,"depts":[]}
|
||||||
|
if os.path.isfile(LOG_FILE):
|
||||||
|
with open(LOG_FILE,"r") as f:
|
||||||
|
logs = json.loads(f.read())
|
||||||
|
print(logs)
|
||||||
|
|
||||||
# Fonctions :
|
# Fonctions :
|
||||||
|
def save_logs(logs):
|
||||||
|
with open(LOG_FILE,"w") as f:
|
||||||
|
f.write(json.dumps(logs))
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def home() :
|
def home() :
|
||||||
@ -104,10 +114,10 @@ def stats():
|
|||||||
for log in logs:
|
for log in logs:
|
||||||
for dept in log["depts"]:
|
for dept in log["depts"]:
|
||||||
pings+=1
|
pings+=1
|
||||||
if dept.name in counts.keys():
|
if dept in counts.keys():
|
||||||
counts[dept.name]+=1
|
counts[dept]+=1
|
||||||
else:
|
else:
|
||||||
counts[dept.name]=1
|
counts[dept]=1
|
||||||
|
|
||||||
sort = [ [x,counts[x]] for x in counts.keys() ]
|
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
|
sort.sort(key = lambda x: x[1],reverse = True ) # Trie selon la valeur du deuxieme élément de la liste
|
||||||
@ -276,13 +286,17 @@ def free_rooms() :
|
|||||||
# Création d'un log de la date et des départements demandés (pour les stats du site) :
|
# Création d'un log de la date et des départements demandés (pour les stats du site) :
|
||||||
log = {}
|
log = {}
|
||||||
log["timestamp"] = dti.datetime.now().timestamp()
|
log["timestamp"] = dti.datetime.now().timestamp()
|
||||||
log["depts"] = depts
|
log["depts"] = [ x.name for x in depts ] # Liste les noms de départements
|
||||||
|
log["type"] = "deptcount" # Type du log
|
||||||
logs.append(log)
|
logs.append(log)
|
||||||
|
|
||||||
# Suppression des logs vieux de MAX_LOG_DAYS :
|
# Suppression des logs vieux de MAX_LOG_DAYS :
|
||||||
while (log["timestamp"] - logs[0]["timestamp"]) / (60*60*24) > MAX_LOG_DAYS :
|
while (log["timestamp"] - logs[0]["timestamp"]) / (60*60*24) > MAX_LOG_DAYS :
|
||||||
del(logs[0])
|
del(logs[0])
|
||||||
|
|
||||||
|
# Sauvegarde les logs dans un fichier cache
|
||||||
|
save_logs(logs)
|
||||||
|
|
||||||
url_for("static", filename="style.css")
|
url_for("static", filename="style.css")
|
||||||
return render_template("free-rooms.html", **context, **GLOBAL_CONTEXT)
|
return render_template("free-rooms.html", **context, **GLOBAL_CONTEXT)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user