From 6d0f10383a934afff5da857dfb733badd327c99e Mon Sep 17 00:00:00 2001 From: gauvainboiche Date: Wed, 4 Nov 2026 09:15:12 +0100 Subject: [PATCH] Semaine 16 - Dossiers d'examen --- .../Jour_01/atelier-web/starter/app.py | 44 +++++++++++++----- .../Jour_01/atelier-web/starter/blocandco.db | Bin 16384 -> 16384 bytes 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/Semaine_16_Exam_01/Jour_01/atelier-web/starter/app.py b/Semaine_16_Exam_01/Jour_01/atelier-web/starter/app.py index 8cba0c4..170cc65 100644 --- a/Semaine_16_Exam_01/Jour_01/atelier-web/starter/app.py +++ b/Semaine_16_Exam_01/Jour_01/atelier-web/starter/app.py @@ -96,25 +96,25 @@ def valider_inscription(nom, prenom, email, mdp, confirmation): erreurs = [] if nom == "": - erreurs.append("Erreur : Le Nom ne doit pas être vide.") + erreurs.append("Le Nom ne doit pas être vide.") if prenom == "": - erreurs.append("Erreur : Le Prénom ne doit pas être vide.") + erreurs.append("Le Prénom ne doit pas être vide.") if not est_courriel(email): - erreurs.append("Erreur : Le Courriel est d'un format invalide.") + erreurs.append("Le Courriel est d'un format invalide.") if len(mdp) < 12: - erreurs.append("Erreur : Le Mot de Passe doit faire 12 caractères de longueur minimum.") + erreurs.append("Le Mot de Passe doit faire 12 caractères de longueur minimum.") if not re.search("[A-Z]", mdp): - erreurs.append("Erreur : Le Mot de Passe doit contenir au moins une Majuscule.") + erreurs.append("Le Mot de Passe doit contenir au moins une Majuscule.") if not re.search("[0-9]", mdp): - erreurs.append("Erreur : Le Mot de Passe doit contenir au moins un Chiffre.") + erreurs.append("Le Mot de Passe doit contenir au moins un Chiffre.") if mdp != confirmation: - erreurs.append("Erreur : Les deux Mots de Passe ne correspondent pas.") + erreurs.append("Les deux Mots de Passe ne correspondent pas.") if len(erreurs) > 0: return erreurs @@ -134,7 +134,7 @@ def utilisateur_courant(): user_id = session.get("user_id") if user_id is None: return None - return get_db().execute("SELECT * FROM members WHERE id = ?", (user_id,)).fetchone() + return get_db().execute("SELECT * FROM adherents WHERE id = ?", (user_id,)).fetchone() # ========================================================================== @@ -278,7 +278,23 @@ def profil(): - refuser un niveau qui n'est pas dans NIVEAUX """ if request.method == "POST": - pass + nom = request.form.get("nom", "").strip() + prenom = request.form.get("prenom", "").strip() + niveau = request.form.get("niveau", "") + + if niveau not in NIVEAUX: + flash("Erreur : Le Niveau choisi est invalide.", "erreur") + elif nom == "" or prenom == "": + flash("Erreur : Le Nom et le Prénom ne doivent pas être vides.", "erreur") + else: + db = get_db() + db.execute( + "UPDATE adherents SET nom = ?, prenom = ?, niveau = ? WHERE id = ?", + (nom, prenom, niveau, session["user_id"]), + ) + db.commit() + flash("Profil mis à jour.", "succes") + return redirect(url_for("profil")) return render_template("profil.html", niveaux=NIVEAUX) @@ -289,7 +305,9 @@ def admin(): À FAIRE : lire tous les adhérents, les plus récents d'abord. """ - adherents = [] + adherents = get_db().execute( + "SELECT * FROM adherents ORDER BY date_inscription DESC, id DESC" + ).fetchall() return render_template("admin.html", adherents=adherents) @@ -297,6 +315,10 @@ def admin(): @admin_requis def promouvoir(adherent_id): """EXERCICE 9 (suite) — promouvoir un adhérent administrateur.""" + db = get_db() + db.execute("UPDATE adherents SET role = 'admin' WHERE id = ?", (adherent_id,)) + db.commit() + flash("Adhérent promu administrateur.", "succes") return redirect(url_for("admin")) @@ -307,7 +329,7 @@ def accueil(): À FAIRE : remplacer le 0 par le vrai total, lu dans la base avec un SELECT COUNT(*). """ - nb = 0 + nb = get_db().execute("SELECT COUNT(*) FROM adherents").fetchone()[0] return render_template("accueil.html", nb_adherents=nb) diff --git a/Semaine_16_Exam_01/Jour_01/atelier-web/starter/blocandco.db b/Semaine_16_Exam_01/Jour_01/atelier-web/starter/blocandco.db index c636b6a0787aa3810e854ba2b68f4296c65f793f..a970c12e3c1d6f0870da45ab7c8cfd95cd56ef18 100644 GIT binary patch delta 335 zcmZXPF-ikL7)EzDL4sh$6tQtb6w)S{nVsF4-AW@0Q9&(4u+g1=<|l$lWD^T3S5IKb z6}*7t5*{EIu#21nw}KW7`yz()Wuy|7uts