"Ajout ou correction sur develop"
This commit is contained in:
73
domo91.py
73
domo91.py
@@ -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"):
|
||||
|
||||
Reference in New Issue
Block a user