"Ajout ou correction sur develop"

This commit is contained in:
2025-04-26 14:35:33 +02:00
parent 9237165215
commit c2698c43bb

View File

@@ -176,26 +176,40 @@ if site_pdf and date_pdf:
if st.sidebar.button("📥 Télécharger létat du jour (PDF)", key="pdf_btn"): 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")) 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) # --- Forcer une alerte de test dynamique (réservé aux superviseurs)
if st.session_state.get("authenticated") and st.session_state.get("role") == "superviseur": 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"
else st.session_state.get("selected_site") else st.session_state.get("selected_site")
) )
if site_actuel: if site_actuel:
# Initialiser la détection de changement de site
if "last_site" not in st.session_state:
st.session_state["last_site"] = None
# Si le site a changé, recharger les sondes disponibles
if site_actuel != st.session_state["last_site"]:
try: try:
conn = mysql.connector.connect(**db_config) conn = mysql.connector.connect(**db_config)
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute(f"SELECT DISTINCT Sonde FROM `{site_actuel}` ORDER BY Sonde ASC") cursor.execute(f"SELECT DISTINCT Sonde FROM `{site_actuel}` ORDER BY Sonde ASC")
sondes_dispo = [row[0] for row in cursor.fetchall()] st.session_state["sondes_dispo"] = [row[0] for row in cursor.fetchall()]
cursor.close() cursor.close()
conn.close() conn.close()
st.session_state["last_site"] = site_actuel
except Exception as e:
st.sidebar.warning(f"Erreur chargement des sondes : {e}")
# Affichage de la liste des sondes disponibles
sondes_dispo = st.session_state.get("sondes_dispo", [])
if sondes_dispo: if sondes_dispo:
st.sidebar.markdown("---") st.sidebar.markdown("---")
st.sidebar.subheader("🧪 Test alerte manuelle") st.sidebar.subheader("🧪 Test alerte manuelle")
sonde_test = st.sidebar.selectbox("Choisir une sonde :", sondes_dispo) sonde_test = st.sidebar.selectbox("Choisir une sonde :", sondes_dispo)
if st.sidebar.button("🔔 Forcer une alerte de test"): if st.sidebar.button("🔔 Forcer une alerte de test"):
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
try: try:
@@ -212,8 +226,6 @@ if st.session_state.get("authenticated") and st.session_state.get("role") == "su
st.success(f"Alerte de test créée pour {sonde_test} à {now}") st.success(f"Alerte de test créée pour {sonde_test} à {now}")
except Exception as e: except Exception as e:
st.error(f"Erreur lors de la création de l'alerte : {e}") st.error(f"Erreur lors de la création de l'alerte : {e}")
except Exception as e:
st.sidebar.warning(f"Erreur chargement des sondes : {e}")
else: else:
st.success(f"Connecté ({st.session_state['role']})") st.success(f"Connecté ({st.session_state['role']})")
@@ -226,7 +238,7 @@ if st.session_state.get("authenticated") and st.session_state.get("role") == "su
st.markdown("---") st.markdown("---")
st.subheader("📄 Rapport PDF") st.subheader("📄 Rapport PDF")
if "selected_date" in st.session_state: if "selected_date" in st.session_state:
if st.button("📥 Télécharger létat du jour (PDF)"): if st.button("📅 Télécharger l'état du jour (PDF)"):
site = st.session_state["lieu_autorise"] site = st.session_state["lieu_autorise"]
date_val = st.session_state["selected_date"].strftime("%Y-%m-%d") date_val = st.session_state["selected_date"].strftime("%Y-%m-%d")
generer_pdf(site, date_val) generer_pdf(site, date_val)
@@ -399,6 +411,11 @@ if st.session_state["authenticated"]:
st.error(f"Erreur chargement statistiques : {e}") st.error(f"Erreur chargement statistiques : {e}")
# --- Affichage automatique des alertes non acquittées --- # --- Affichage automatique des alertes non acquittées ---
site_selectionne = (
st.session_state.get("lieu_autorise")
if st.session_state.get("role") != "superviseur"
else st.session_state.get("selected_site")
)
try: try:
conn = mysql.connector.connect(**db_config) conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True) cursor = conn.cursor(dictionary=True)
@@ -414,26 +431,38 @@ if st.session_state["authenticated"]:
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.sidebar.text_input("Nom de la nouvelle sonde :")
temp_max = st.number_input("Température maximale autorisée (°C)", value=4) seuil_max = st.sidebar.number_input("Température maximale autorisée :", min_value=-50.0,
etat_on = st.checkbox("État actif (ON)", value=True) max_value=50.0, value=6.0, step=0.1)
submitted = st.form_submit_button(" Ajouter") if st.sidebar.button(" Ajouter la nouvelle sonde"):
if submitted:
try: try:
conn_add = mysql.connector.connect(**db_config) conn = mysql.connector.connect(**db_config)
cursor_add = conn_add.cursor() cursor = conn.cursor()
cursor_add.execute(
"INSERT INTO Chambres_froides (Lieu, Sonde, Temp_Max, Status) VALUES (%s, %s, %s, %s)", # Insérer dans Chambres_froides
(site, nouvelle_sonde, temp_max, "ON" if etat_on else "OFF") cursor.execute("""
) INSERT INTO Chambres_froides (Lieu, Sonde, Temp_Max, Etat)
conn_add.commit() VALUES (%s, %s, %s, %s)
cursor_add.close() """, (site_actuel, nouvelle_sonde, seuil_max, "ON"))
conn_add.close() conn.commit()
st.success(f"Sonde '{nouvelle_sonde}' ajoutée avec succès au site {site} 🎉")
st.session_state["refresh_admin"] = random.randint(1000, 9999) # Insérer un premier relevé dans la table de relevés
table_releves = site_actuel
cursor.execute(f"""
INSERT INTO `{table_releves}` (Date, Sonde, Temperature)
VALUES (NOW(), %s, %s)
""", (nouvelle_sonde, 0.0))
conn.commit()
cursor.close()
conn.close()
st.success(
f"Sonde {nouvelle_sonde} ajoutée avec Temp_Max {seuil_max}°C et premier relevé enregistré.")
except Exception as e: except Exception as e:
st.error(f"Erreur lors de l'ajout : {e}") st.error(f"Erreur lors de l'ajout de la sonde : {e}")
with st.expander("🛠️ Gestion des chambres froides (administrateur)", expanded=True): with st.expander("🛠️ Gestion des chambres froides (administrateur)", expanded=True):
if st.button("🔄 Actualiser la liste"): if st.button("🔄 Actualiser la liste"):