From 34712939a031f00153c773957b1cf1e6b25af974 Mon Sep 17 00:00:00 2001 From: Michel Date: Mon, 21 Apr 2025 20:29:03 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20domo91.py=20depuis?= =?UTF-8?q?=20develop=20:=20PDF=20+=20d=C3=A9connexion=20+=20droits=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domo91.py | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/domo91.py b/domo91.py index 2a73efa..e26270b 100644 --- a/domo91.py +++ b/domo91.py @@ -105,6 +105,7 @@ def generer_pdf(site, date_str): except Exception as e: st.error(f"Erreur lors de la génération du PDF : {e}") + # --- Initialisation des variables de session --- if "authenticated" not in st.session_state: st.session_state["authenticated"] = False @@ -113,9 +114,7 @@ if "role" not in st.session_state: if "lieu_autorise" not in st.session_state: st.session_state["lieu_autorise"] = None -# --- Sidebar (connexion + bouton PDF) --- - -# 🔐 Connexion (toujours affichée) +# --- Connexion utilisateur dans la sidebar --- st.sidebar.header("🔐 Connexion") if not st.session_state.get("authenticated"): login = st.sidebar.text_input("Nom d'utilisateur") @@ -131,6 +130,7 @@ if not st.session_state.get("authenticated"): st.session_state["role"] = result["role"] st.session_state["lieu_autorise"] = result["Lieu"] st.success(f"Connecté comme {result['role']} ({result['Lieu']})") + st.rerun() else: st.sidebar.error("Identifiants invalides") cursor.close() @@ -139,14 +139,28 @@ if not st.session_state.get("authenticated"): st.sidebar.error(f"Erreur lors de la connexion à la base : {e}") else: st.sidebar.success(f"Connecté ({st.session_state['role']})") - if st.sidebar.button("🔓 Déconnexion"): + if st.sidebar.button("🔓 Déconnexion", key="logout_sidebar"): st.session_state["authenticated"] = False st.session_state["role"] = None st.session_state["lieu_autorise"] = None st.rerun() -# 🔔 Forcer une alerte de test dynamique avec choix de la sonde -if st.session_state.get("authenticated"): +# 📄 Affichage bouton PDF si une date est choisie +site_pdf = ( + st.session_state.get("lieu_autorise") + if st.session_state.get("role") != "superviseur" + else st.session_state.get("selected_site") +) +date_pdf = st.session_state.get("selected_date") +if site_pdf and date_pdf: + st.sidebar.markdown("---") + st.sidebar.subheader("📄 Rapport PDF") + if st.sidebar.button("📥 Télécharger l’état du jour (PDF)", key="pdf_btn"): + generer_pdf(site_pdf, date_pdf.strftime("%Y-%m-%d")) + + +# 🔔 Forcer une alerte de test dynamique avec choix de la sonde (réservé aux superviseurs) +if st.session_state.get("authenticated") and st.session_state.get("role") == "superviseur": site_actuel = ( st.session_state.get("lieu_autorise") if st.session_state.get("role") != "superviseur" @@ -186,7 +200,7 @@ if st.session_state.get("authenticated"): else: st.success(f"Connecté ({st.session_state['role']})") - if st.button("🔓 Déconnexion"): + if st.button("🔓 Déconnexion", key="logout_main"): st.session_state["authenticated"] = False st.session_state["role"] = None st.session_state["lieu_autorise"] = None @@ -307,7 +321,7 @@ if st.session_state["authenticated"]: except Exception as e: st.error(f"Erreur MySQL : {e}") if st.session_state["role"] == "superviseur": - with st.expander("➕ Ajouter une nouvelle chambre froide", expanded=False): + with st.expander("+ Ajouter une nouvelle chambre froide", expanded=False): with st.form("ajout_sonde"): nouvelle_sonde = st.text_input("Nom de la sonde") temp_max = st.number_input("Température maximale autorisée (°C)", value=4) @@ -364,13 +378,13 @@ if st.session_state["role"] == "superviseur": temp_max = chambre["Temp_Max"] moins, val, plus = st.columns([1, 2, 1]) with moins: - if st.button("➖", key=f"moins_{chambre['Id']}"): + if st.button("-", key=f"moins_{chambre['Id']}"): temp_max -= 1 with val: st.markdown(f"
{temp_max}°C
", unsafe_allow_html=True) with plus: - if st.button("➕", key=f"plus_{chambre['Id']}"): + if st.button("+", key=f"plus_{chambre['Id']}"): temp_max += 1 if new_etat != chambre["Etat"] or temp_max != chambre["Temp_Max"]: