"Ajout ou correction sur develop"

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

129
domo91.py
View File

@@ -176,44 +176,56 @@ 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:
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()]
cursor.close()
conn.close()
if sondes_dispo: if site_actuel:
st.sidebar.markdown("---") # Initialiser la détection de changement de site
st.sidebar.subheader("🧪 Test alerte manuelle") if "last_site" not in st.session_state:
sonde_test = st.sidebar.selectbox("Choisir une sonde :", sondes_dispo) st.session_state["last_site"] = None
if st.sidebar.button("🔔 Forcer une alerte de test"):
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # Si le site a changé, recharger les sondes disponibles
try: if site_actuel != st.session_state["last_site"]:
conn = mysql.connector.connect(**db_config) try:
cursor = conn.cursor() conn = mysql.connector.connect(**db_config)
table_alertes = f"Alertes_{site_actuel}" cursor = conn.cursor()
cursor.execute(f""" cursor.execute(f"SELECT DISTINCT Sonde FROM `{site_actuel}` ORDER BY Sonde ASC")
INSERT INTO {table_alertes} (Sonde, Debut_defaut, Status) st.session_state["sondes_dispo"] = [row[0] for row in cursor.fetchall()]
VALUES (%s, %s, %s) cursor.close()
""", (sonde_test, now, "Test")) conn.close()
conn.commit() st.session_state["last_site"] = site_actuel
cursor.close() except Exception as e:
conn.close() st.sidebar.warning(f"Erreur chargement des sondes : {e}")
st.success(f"Alerte de test créée pour {sonde_test} à {now}")
except Exception as e: # Affichage de la liste des sondes disponibles
st.error(f"Erreur lors de la création de l'alerte : {e}") sondes_dispo = st.session_state.get("sondes_dispo", [])
except Exception as e:
st.sidebar.warning(f"Erreur chargement des sondes : {e}") 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:
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
table_alertes = f"Alertes_{site_actuel}"
cursor.execute(f"""
INSERT INTO {table_alertes} (Sonde, Debut_defaut, Status)
VALUES (%s, %s, %s)
""", (sonde_test, now, "Test"))
conn.commit()
cursor.close()
conn.close()
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}")
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"):
@@ -506,4 +535,4 @@ if st.session_state["authenticated"]:
st.error(f"Erreur chargement des connexions : {e}") st.error(f"Erreur chargement des connexions : {e}")
except exception as err: except exception as err:
st.error(f"Erreur MySQL : {err}") st.error(f"Erreur MySQL : {err}")