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_filen = "data/dept_list.txt"
dept_list = ro.get_depts(dept_filen) dept_list = ro.get_depts(dept_filen)
content = {"dept_list":dept_list} content = {"dept_list":dept_list}
url_for("static", filename="style.css") url_for("static", filename="style.css")
@ -66,26 +67,38 @@ def free_rooms() :
flask.render_template 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 = 1 #TODO : décalage horaire (pb de fuseau ?)
#hdelay = 2
#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") 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 Attributes
---------- ----------
ident : int
Identifiant du département.
name : string name : string
Nom du département. Nom du département.
@ -67,7 +70,8 @@ class Dept :
La liste des salles de ce département 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.name = name
self.link = link self.link = link
self.rooms = rooms self.rooms = rooms

View File

@ -139,9 +139,12 @@ def get_depts(filename) :
# dept = Dept("", "", []) # dept = Dept("", "", [])
dfile_content = dept_file.readlines() dfile_content = dept_file.readlines()
ident = 0 # Compteur pour les identifiants des départements
for i in range(len(dfile_content) - 1) : for i in range(0, len(dfile_content) - 1, 2) :
dept_list.append(Dept(dfile_content[i], dfile_content[i + 1], [])) dept_list.append(Dept(ident, dfile_content[i], dfile_content[i + 1], []))
ident += 1
# for l in dfile_content : # 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 : # Récupération des calendriers correspondants au lien du département :
cals = list() # Liste des emplois du temps des départements choisis cals = list() # Liste des emplois du temps des départements choisis
for d in depts : 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)) 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 : # 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; border-radius: 10px;
} }
input checkbox {
margin-bottom: 5px;
}
.done { .done {
background: var(--bg-dark); background: var(--bg-dark);
text-decoration: line-through; text-decoration: line-through;
@ -114,4 +118,4 @@ input {
} }
@media screen and (max-width: 769px) { @media screen and (max-width: 769px) {
} }

View File

@ -9,14 +9,17 @@
<header>UniSquat</header> <header>UniSquat</header>
<main> <main>
Sélectionnez des départements dans la liste : 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"> <input type="submit" value="Valider">
<br> <br>
{% for d in dept_list : %} {% 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 %} {% endfor %}
</form> </form>
</main> </main>
<footer></footer> <footer></footer>
</body> </body>
</html> </html>