"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"):
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":
site_actuel = (
st.session_state.get("lieu_autorise")
if st.session_state.get("role") != "superviseur"
else st.session_state.get("selected_site")
)
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:
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
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()
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:
st.sidebar.markdown("---")
st.sidebar.subheader("🧪 Test alerte manuelle")
sonde_test = st.sidebar.selectbox("Choisir une sonde :", sondes_dispo)
if st.sidebar.button("🔔 Forcer une alerte de test"):
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
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}")
except Exception as 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:
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.subheader("📄 Rapport PDF")
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"]
date_val = st.session_state["selected_date"].strftime("%Y-%m-%d")
generer_pdf(site, date_val)
@@ -399,6 +411,11 @@ if st.session_state["authenticated"]:
st.error(f"Erreur chargement statistiques : {e}")
# --- 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:
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
@@ -414,26 +431,38 @@ if st.session_state["authenticated"]:
if st.session_state["role"] == "superviseur":
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)
etat_on = st.checkbox("État actif (ON)", value=True)
nouvelle_sonde = st.sidebar.text_input("Nom de la nouvelle sonde :")
seuil_max = st.sidebar.number_input("Température maximale autorisée :", min_value=-50.0,
max_value=50.0, value=6.0, step=0.1)
submitted = st.form_submit_button(" Ajouter")
if submitted:
if st.sidebar.button(" Ajouter la nouvelle sonde"):
try:
conn_add = mysql.connector.connect(**db_config)
cursor_add = conn_add.cursor()
cursor_add.execute(
"INSERT INTO Chambres_froides (Lieu, Sonde, Temp_Max, Status) VALUES (%s, %s, %s, %s)",
(site, nouvelle_sonde, temp_max, "ON" if etat_on else "OFF")
)
conn_add.commit()
cursor_add.close()
conn_add.close()
st.success(f"Sonde '{nouvelle_sonde}' ajoutée avec succès au site {site} 🎉")
st.session_state["refresh_admin"] = random.randint(1000, 9999)
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
# Insérer dans Chambres_froides
cursor.execute("""
INSERT INTO Chambres_froides (Lieu, Sonde, Temp_Max, Etat)
VALUES (%s, %s, %s, %s)
""", (site_actuel, nouvelle_sonde, seuil_max, "ON"))
conn.commit()
# 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:
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):
if st.button("🔄 Actualiser la liste"):