From a702385c21d70e598eb9db8ca33a687a027f8fbc Mon Sep 17 00:00:00 2001 From: Antoine Date: Fri, 16 Sep 2022 12:26:06 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'une=20v=C3=A9rification=20de=20la=20d?= =?UTF-8?q?ate=20et=20de=20l'heure=20entr=C3=A9es.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 13 ++++++++- date_tools.py | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++- rooms_get.py | 2 +- 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index 92a987a..1ff7ba7 100644 --- a/app.py +++ b/app.py @@ -16,6 +16,7 @@ import datetime as dti import pytz import json import os +import traceback from flask import Flask from flask import render_template @@ -173,6 +174,9 @@ def free_rooms() : else : 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(request.args.get("time")) time_uf_sav = time_uf if time_uf == "None" : @@ -180,6 +184,9 @@ def free_rooms() : else : 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() @@ -228,7 +235,11 @@ def free_rooms() : ignore_list = ["salle non définie", "salle en Distanciel"] - free_rooms = ro.getrooms(date, depts, ignore_list) + try : + 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 : frooms_disp = dict() # Mise en forme des infos pour la page Web diff --git a/date_tools.py b/date_tools.py index 3cd1abf..87e0eb5 100644 --- a/date_tools.py +++ b/date_tools.py @@ -175,4 +175,80 @@ def remain_time(date, rdate) : if deltasec[1] > 0 : remain_time_str += " " + str(deltasec[1]) + " minutes" - return remain_time_str \ No newline at end of file + 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 \ No newline at end of file diff --git a/rooms_get.py b/rooms_get.py index 4f9984a..67afe40 100644 --- a/rooms_get.py +++ b/rooms_get.py @@ -135,7 +135,7 @@ def sched_get(date, link, enddate = None, nocache = False) : finallink = finallink.replace("$DAY2$", day1) finallink = finallink.replace("$MONTH2$", month1) finallink = finallink.replace("$YEAR2$", year1) - + if nocache: return requests.get(finallink).content else :