Mise à jour de domo91.py depuis develop : PDF + déconnexion + droits test

This commit is contained in:
2025-04-21 20:29:03 +02:00
parent 1feee47b65
commit 34712939a0

View File

@@ -105,6 +105,7 @@ def generer_pdf(site, date_str):
except Exception as e: except Exception as e:
st.error(f"Erreur lors de la génération du PDF : {e}") st.error(f"Erreur lors de la génération du PDF : {e}")
# --- Initialisation des variables de session --- # --- Initialisation des variables de session ---
if "authenticated" not in st.session_state: if "authenticated" not in st.session_state:
st.session_state["authenticated"] = False st.session_state["authenticated"] = False
@@ -113,9 +114,7 @@ if "role" not in st.session_state:
if "lieu_autorise" not in st.session_state: if "lieu_autorise" not in st.session_state:
st.session_state["lieu_autorise"] = None st.session_state["lieu_autorise"] = None
# --- Sidebar (connexion + bouton PDF) --- # --- Connexion utilisateur dans la sidebar ---
# 🔐 Connexion (toujours affichée)
st.sidebar.header("🔐 Connexion") st.sidebar.header("🔐 Connexion")
if not st.session_state.get("authenticated"): if not st.session_state.get("authenticated"):
login = st.sidebar.text_input("Nom d'utilisateur") 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["role"] = result["role"]
st.session_state["lieu_autorise"] = result["Lieu"] st.session_state["lieu_autorise"] = result["Lieu"]
st.success(f"Connecté comme {result['role']} ({result['Lieu']})") st.success(f"Connecté comme {result['role']} ({result['Lieu']})")
st.rerun()
else: else:
st.sidebar.error("Identifiants invalides") st.sidebar.error("Identifiants invalides")
cursor.close() 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}") st.sidebar.error(f"Erreur lors de la connexion à la base : {e}")
else: else:
st.sidebar.success(f"Connecté ({st.session_state['role']})") 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["authenticated"] = False
st.session_state["role"] = None st.session_state["role"] = None
st.session_state["lieu_autorise"] = None st.session_state["lieu_autorise"] = None
st.rerun() st.rerun()
# 🔔 Forcer une alerte de test dynamique avec choix de la sonde # 📄 Affichage bouton PDF si une date est choisie
if st.session_state.get("authenticated"): 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 = ( site_actuel = (
st.session_state.get("lieu_autorise") st.session_state.get("lieu_autorise")
if st.session_state.get("role") != "superviseur" if st.session_state.get("role") != "superviseur"
@@ -186,7 +200,7 @@ if st.session_state.get("authenticated"):
else: else:
st.success(f"Connecté ({st.session_state['role']})") 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["authenticated"] = False
st.session_state["role"] = None st.session_state["role"] = None
st.session_state["lieu_autorise"] = None st.session_state["lieu_autorise"] = None
@@ -307,7 +321,7 @@ if st.session_state["authenticated"]:
except Exception as e: except Exception as e:
st.error(f"Erreur MySQL : {e}") st.error(f"Erreur MySQL : {e}")
if st.session_state["role"] == "superviseur": 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"): with st.form("ajout_sonde"):
nouvelle_sonde = st.text_input("Nom de la sonde") nouvelle_sonde = st.text_input("Nom de la sonde")
temp_max = st.number_input("Température maximale autorisée (°C)", value=4) 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"] temp_max = chambre["Temp_Max"]
moins, val, plus = st.columns([1, 2, 1]) moins, val, plus = st.columns([1, 2, 1])
with moins: with moins:
if st.button("", key=f"moins_{chambre['Id']}"): if st.button("-", key=f"moins_{chambre['Id']}"):
temp_max -= 1 temp_max -= 1
with val: with val:
st.markdown(f"<div style='text-align:center;font-size:20px'>{temp_max}°C</div>", st.markdown(f"<div style='text-align:center;font-size:20px'>{temp_max}°C</div>",
unsafe_allow_html=True) unsafe_allow_html=True)
with plus: with plus:
if st.button("", key=f"plus_{chambre['Id']}"): if st.button("+", key=f"plus_{chambre['Id']}"):
temp_max += 1 temp_max += 1
if new_etat != chambre["Etat"] or temp_max != chambre["Temp_Max"]: if new_etat != chambre["Etat"] or temp_max != chambre["Temp_Max"]: