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