Ajout du choix du départements (possibilité d'en choisir plusieurs) (Flask uniquement).

Ajout d'un identifiant pour les départements.
This commit is contained in:
Antoine 2022-05-10 22:35:16 +02:00
parent 1c9b10a54e
commit 01d3aee55d
5 changed files with 48 additions and 21 deletions

37
app.py
View File

@ -45,6 +45,7 @@ def select_dept() :
dept_filen = "data/dept_list.txt"
dept_list = ro.get_depts(dept_filen)
content = {"dept_list":dept_list}
url_for("static", filename="style.css")
@ -66,26 +67,38 @@ def free_rooms() :
flask.render_template
"""
depts = request.form["dept"]
# Récupération des ID des départements depuis le formulaire :
if request.method == "POST" :
dident_list = request.form["dept"]
else :
dident_list = request.args.getlist("dept")
print(depts)
# Récupération de la liste des départements :
dept_filen = "data/dept_list.txt"
dept_list = ro.get_depts(dept_filen)
#hdelay = 1 #TODO : décalage horaire (pb de fuseau ?)
# Récupération des départements choisis à partir des données du formulaire :
i = 0
depts = list()
for d in dept_list :
if i < len(dident_list) and d.ident == int(dident_list[i]) :
depts.append(d)
i += 1
#if time.localtime().tm_isdst != 0 :
#hdelay = 2
hdelay = 1 #TODO : décalage horaire (pb de fuseau ?)
#ignore_list = ["salle non définie", "salle en Distanciel"]
if time.localtime().tm_isdst != 0 :
hdelay = 2
##dept = dept_list[0] #TODO : proposer d'autres départements
ignore_list = ["salle non définie", "salle en Distanciel"]
#date = dti.datetime(2022, 5, 5, 10, 30)
#dept = dept_list[0] #TODO : proposer d'autres départements
#available_rooms = ro.getrooms(date, depts, ignore_list)
date = dti.datetime(2022, 5, 5, 10, 30)
#context = {"available_rooms":available_rooms, "hdelay":hdelay}
available_rooms = ro.getrooms(date, depts, ignore_list)
context = {}
context = {"available_rooms":available_rooms, "hdelay":hdelay}
url_for("static", filename="style.css")
return render_template("free-rooms.html", **context)
return render_template("free-rooms.html", **context)

View File

@ -57,6 +57,9 @@ class Dept :
Attributes
----------
ident : int
Identifiant du département.
name : string
Nom du département.
@ -67,7 +70,8 @@ class Dept :
La liste des salles de ce département
"""
def __init__(self, name, link, rooms) :
def __init__(self, ident, name, link, rooms) :
self.ident = ident
self.name = name
self.link = link
self.rooms = rooms
self.rooms = rooms

View File

@ -139,9 +139,12 @@ def get_depts(filename) :
# dept = Dept("", "", [])
dfile_content = dept_file.readlines()
ident = 0 # Compteur pour les identifiants des départements
for i in range(len(dfile_content) - 1) :
dept_list.append(Dept(dfile_content[i], dfile_content[i + 1], []))
for i in range(0, len(dfile_content) - 1, 2) :
dept_list.append(Dept(ident, dfile_content[i], dfile_content[i + 1], []))
ident += 1
# for l in dfile_content :
# """
@ -250,7 +253,7 @@ def getrooms(datet, depts, ignore_list) :
# Récupération des calendriers correspondants au lien du département :
cals = list() # Liste des emplois du temps des départements choisis
for d in depts :
result = sched_get(datet, d.link, datet.replace(month = datet.month + margintime))
result = sched_get(datet, d.link, datet)
cals.append(icalendar.Calendar.from_ical(result))
# Ajout des infos supplémentaires sur les salles (heures de début-fin de dispo, indicateur de dispo), s'il y en a :

View File

@ -104,6 +104,10 @@ button, input {
border-radius: 10px;
}
input checkbox {
margin-bottom: 5px;
}
.done {
background: var(--bg-dark);
text-decoration: line-through;
@ -114,4 +118,4 @@ input {
}
@media screen and (max-width: 769px) {
}
}

View File

@ -9,14 +9,17 @@
<header>UniSquat</header>
<main>
Sélectionnez des départements dans la liste :
<form action="/free-rooms" method="post">
<form action="/free-rooms" method="get">
<input type="submit" value="Valider">
<br>
{% for d in dept_list : %}
<input type="radio" id="{{ d }}" name="dept" value="{{ d }}"><br>
<div>
<input type="checkbox" id="{{ d.ident }}" name="dept" value="{{ d.ident }}">
<label for="{{ d.ident }}">{{ d.name }}</label>
</div>
{% endfor %}
</form>
</main>
<footer></footer>
</body>
</html>
</html>