Compare commits
No commits in common. "6d4326e30c1aea29d847c7d048240ebd2fffbc2e" and "159ff9bcf728bedd3d87ed079eb60aa7b655a008" have entirely different histories.
6d4326e30c
...
159ff9bcf7
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,5 +4,3 @@ __pycache__/
|
|||||||
cache/
|
cache/
|
||||||
push_to_server.sh
|
push_to_server.sh
|
||||||
log.json
|
log.json
|
||||||
venv
|
|
||||||
venv/*
|
|
||||||
|
39
app.py
39
app.py
@ -16,7 +16,6 @@ import datetime as dti
|
|||||||
import pytz
|
import pytz
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import traceback
|
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
@ -142,7 +141,7 @@ def stats():
|
|||||||
|
|
||||||
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
|
||||||
|
|
||||||
sort_favs = [ counts_favs[x] for x in counts_favs.keys() ]
|
sort_favs = [ counts_favs[x] for x in counts_favs.keys() ]
|
||||||
sort_favs.sort(key = lambda x: x[2],reverse = True )
|
sort_favs.sort(key = lambda x: x[2],reverse = True )
|
||||||
|
|
||||||
@ -159,7 +158,7 @@ def free_rooms(api = False, rq = None) :
|
|||||||
----------
|
----------
|
||||||
api : bool
|
api : bool
|
||||||
Indique si la page est accédée par l'API.
|
Indique si la page est accédée par l'API.
|
||||||
|
|
||||||
rq : requests.request
|
rq : requests.request
|
||||||
Requête.
|
Requête.
|
||||||
|
|
||||||
@ -169,7 +168,7 @@ def free_rooms(api = False, rq = None) :
|
|||||||
"""
|
"""
|
||||||
if not api :
|
if not api :
|
||||||
rq = request
|
rq = request
|
||||||
|
|
||||||
if GLOBAL_CONTEXT["DEBUG"]:
|
if GLOBAL_CONTEXT["DEBUG"]:
|
||||||
print(f"dept:\n\t{rq.args.getlist('dept')}")
|
print(f"dept:\n\t{rq.args.getlist('dept')}")
|
||||||
print(f"favs:\n\t{rq.args.getlist('favs')}")
|
print(f"favs:\n\t{rq.args.getlist('favs')}")
|
||||||
@ -189,9 +188,6 @@ def free_rooms(api = False, rq = None) :
|
|||||||
else :
|
else :
|
||||||
date_uf = date_uf.split("-")
|
date_uf = date_uf.split("-")
|
||||||
|
|
||||||
if date_uf != [""] and not (date_tools.check_date(date_uf)) :
|
|
||||||
return render_template("error.html", error="Date incorrecte !")
|
|
||||||
|
|
||||||
time_uf = str(rq.args.get("time"))
|
time_uf = str(rq.args.get("time"))
|
||||||
time_uf_sav = time_uf
|
time_uf_sav = time_uf
|
||||||
if time_uf == "None" :
|
if time_uf == "None" :
|
||||||
@ -199,9 +195,6 @@ def free_rooms(api = False, rq = None) :
|
|||||||
else :
|
else :
|
||||||
time_uf = time_uf.split(":")
|
time_uf = time_uf.split(":")
|
||||||
|
|
||||||
if time_uf != [""] and not (date_tools.check_time(time_uf)) :
|
|
||||||
return render_template("error.html", error="Heure incorrecte !")
|
|
||||||
|
|
||||||
|
|
||||||
date = dti.datetime.now()
|
date = dti.datetime.now()
|
||||||
|
|
||||||
@ -214,8 +207,8 @@ def free_rooms(api = False, rq = None) :
|
|||||||
if time_uf != [""] :
|
if time_uf != [""] :
|
||||||
date = date.replace(hour = int(time_uf[0]), minute = int(time_uf[1]))
|
date = date.replace(hour = int(time_uf[0]), minute = int(time_uf[1]))
|
||||||
date_str += ", à " + time_uf[0] + ":" + time_uf[1]
|
date_str += ", à " + time_uf[0] + ":" + time_uf[1]
|
||||||
|
|
||||||
|
|
||||||
# Récupération des IDs des salles favorites :
|
# Récupération des IDs des salles favorites :
|
||||||
favs_ids = list(rq.args.getlist("favs"))
|
favs_ids = list(rq.args.getlist("favs"))
|
||||||
if favs_ids == [None] :
|
if favs_ids == [None] :
|
||||||
@ -225,7 +218,7 @@ def free_rooms(api = False, rq = None) :
|
|||||||
# Récupération de la liste des départements existants :
|
# Récupération de la liste des départements existants :
|
||||||
dept_filen = "data/dept_list.txt"
|
dept_filen = "data/dept_list.txt"
|
||||||
dept_list = ro.get_depts(dept_filen)
|
dept_list = ro.get_depts(dept_filen)
|
||||||
|
|
||||||
# Vérification qu'il n'y a pas de mauvais départements demandés :
|
# Vérification qu'il n'y a pas de mauvais départements demandés :
|
||||||
for d in dident_list :
|
for d in dident_list :
|
||||||
try :
|
try :
|
||||||
@ -250,15 +243,11 @@ def free_rooms(api = False, rq = None) :
|
|||||||
|
|
||||||
ignore_list = ["salle non définie", "salle en Distanciel"]
|
ignore_list = ["salle non définie", "salle en Distanciel"]
|
||||||
|
|
||||||
try :
|
free_rooms = ro.getrooms(date, depts, ignore_list)
|
||||||
free_rooms = ro.getrooms(date, depts, ignore_list)
|
|
||||||
except ValueError as err :
|
|
||||||
return render_template("error.html", error="Le serveur Unistra a rencontré une erreur ! Veuillez réessayer plus tard.")
|
|
||||||
#return render_template("error.html", error="Le serveur Unistra a rencontré une erreur ! Détails de l'erreur : " + str(''.join(traceback.format_exception(None, err, err.__traceback__))))
|
|
||||||
|
|
||||||
# Création d'un dictionnaire avec les infos des salles :
|
# Création d'un dictionnaire avec les infos des salles :
|
||||||
frooms_disp = dict() # Mise en forme des infos pour la page Web
|
frooms_disp = dict() # Mise en forme des infos pour la page Web
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
for r in free_rooms :
|
for r in free_rooms :
|
||||||
remain_time_str = ""
|
remain_time_str = ""
|
||||||
@ -271,7 +260,7 @@ def free_rooms(api = False, rq = None) :
|
|||||||
"end":date_tools.hour_disp(r.end),
|
"end":date_tools.hour_disp(r.end),
|
||||||
"rtime":remain_time_str}
|
"rtime":remain_time_str}
|
||||||
|
|
||||||
|
|
||||||
# Ajout des arguments favoris, et départements à l'URL :
|
# Ajout des arguments favoris, et départements à l'URL :
|
||||||
change_date_str = "?"
|
change_date_str = "?"
|
||||||
if favs_ids != [] :
|
if favs_ids != [] :
|
||||||
@ -288,7 +277,7 @@ def free_rooms(api = False, rq = None) :
|
|||||||
if i<len(dident_list)-1:
|
if i<len(dident_list)-1:
|
||||||
change_date_str += "&"
|
change_date_str += "&"
|
||||||
i+=1
|
i+=1
|
||||||
|
|
||||||
|
|
||||||
# Génération du lien pour enlever les favoris séléctionnés :
|
# Génération du lien pour enlever les favoris séléctionnés :
|
||||||
nofavslink = "/app/free-rooms?"
|
nofavslink = "/app/free-rooms?"
|
||||||
@ -338,14 +327,14 @@ def free_rooms(api = False, rq = None) :
|
|||||||
log["favs"] = [ [x.name,x.dept_name] for x in favs] # Liste les noms des salles favorites
|
log["favs"] = [ [x.name,x.dept_name] for x in favs] # Liste les noms des salles favorites
|
||||||
log["type"] = "favs" # Type du log
|
log["type"] = "favs" # 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 (ctimestamp - logs[0]["timestamp"]) / (60*60*24) > MAX_LOG_DAYS :
|
while (ctimestamp - logs[0]["timestamp"]) / (60*60*24) > MAX_LOG_DAYS :
|
||||||
del(logs[0])
|
del(logs[0])
|
||||||
|
|
||||||
# Sauvegarde les logs dans un fichier cache
|
# Sauvegarde les logs dans un fichier cache
|
||||||
save_logs(logs)
|
save_logs(logs)
|
||||||
|
|
||||||
if api :
|
if api :
|
||||||
serial_context = context
|
serial_context = context
|
||||||
for i in range(len(serial_context["free_rooms"])) :
|
for i in range(len(serial_context["free_rooms"])) :
|
||||||
@ -407,7 +396,7 @@ def api_depts_get() :
|
|||||||
dept_filen = "data/dept_list.txt"
|
dept_filen = "data/dept_list.txt"
|
||||||
dept_list = ro.get_depts(dept_filen)
|
dept_list = ro.get_depts(dept_filen)
|
||||||
serial_dlist = [vars(d) for d in dept_list]
|
serial_dlist = [vars(d) for d in dept_list]
|
||||||
|
|
||||||
response = make_response(json.dumps(serial_dlist))
|
response = make_response(json.dumps(serial_dlist))
|
||||||
response.headers["Content-Type"] = "application/json"
|
response.headers["Content-Type"] = "application/json"
|
||||||
return response
|
return response
|
||||||
|
@ -175,80 +175,4 @@ def remain_time(date, rdate) :
|
|||||||
if deltasec[1] > 0 :
|
if deltasec[1] > 0 :
|
||||||
remain_time_str += " " + str(deltasec[1]) + " minutes"
|
remain_time_str += " " + str(deltasec[1]) + " minutes"
|
||||||
|
|
||||||
return remain_time_str
|
return remain_time_str
|
||||||
|
|
||||||
def check_date(date) :
|
|
||||||
"""
|
|
||||||
Vérifie que la date est correcte.
|
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
date : list
|
|
||||||
Date à vérifier.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
bool
|
|
||||||
'True' si la date est correcte, 'False' sinon.
|
|
||||||
"""
|
|
||||||
year = 1
|
|
||||||
month = 1
|
|
||||||
day = 1
|
|
||||||
|
|
||||||
if len(date) != 3 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
try :
|
|
||||||
year = int(date[0])
|
|
||||||
month = int(date[1])
|
|
||||||
day = int(date[2])
|
|
||||||
except ValueError :
|
|
||||||
return False
|
|
||||||
|
|
||||||
if year < 2 or month < 1 or day < 1 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
if month > 12 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
if day > month_days(month, year) :
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def check_time(time) :
|
|
||||||
"""
|
|
||||||
Vérifie que l'heure est correcte.
|
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
time : list
|
|
||||||
Heure à vérifier.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
bool
|
|
||||||
'True' si l'heure est correcte, 'False' sinon.
|
|
||||||
"""
|
|
||||||
hour = 0
|
|
||||||
minute = 0
|
|
||||||
|
|
||||||
if len(time) != 2 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
try :
|
|
||||||
hour = int(time[0])
|
|
||||||
minute = int(time[1])
|
|
||||||
except ValueError :
|
|
||||||
return False
|
|
||||||
|
|
||||||
if hour < 0 or minute < 0 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
if hour > 23 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
if minute > 59 :
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
@ -94,4 +94,4 @@ class Dept :
|
|||||||
self.rooms = rooms
|
self.rooms = rooms
|
||||||
|
|
||||||
def genlink(self,link):
|
def genlink(self,link):
|
||||||
return "https://adecons.unistra.fr/jsp/custom/modules/plannings/anonymous_cal.jsp?resources="+link.strip()+"&projectId=1&calType=ical"
|
return "https://adecons.unistra.fr/jsp/custom/modules/plannings/anonymous_cal.jsp?resources="+link.strip()+"&projectId=5&calType=ical"
|
||||||
|
@ -135,7 +135,7 @@ def sched_get(date, link, enddate = None, nocache = False) :
|
|||||||
finallink = finallink.replace("$DAY2$", day1)
|
finallink = finallink.replace("$DAY2$", day1)
|
||||||
finallink = finallink.replace("$MONTH2$", month1)
|
finallink = finallink.replace("$MONTH2$", month1)
|
||||||
finallink = finallink.replace("$YEAR2$", year1)
|
finallink = finallink.replace("$YEAR2$", year1)
|
||||||
|
|
||||||
if nocache:
|
if nocache:
|
||||||
return requests.get(finallink).content
|
return requests.get(finallink).content
|
||||||
else :
|
else :
|
||||||
|
Loading…
Reference in New Issue
Block a user