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:
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"<div style='text-align:center;font-size:20px'>{temp_max}°C</div>",
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"]: