diff --git a/Docs/Commandes pratiques terminal b/Docs/Commandes pratiques terminal new file mode 100644 index 0000000..e69de29 diff --git a/Docs/update_product_from_develop.txt b/Docs/update_product_from_develop.txt new file mode 100644 index 0000000..f07a03c --- /dev/null +++ b/Docs/update_product_from_develop.txt @@ -0,0 +1,20 @@ +📝 ExĂ©cution du script update_product_from_develop.sh sous Windows +🎯 Objectif : + Mettre Ă  jour les fichiers dĂ©jĂ  prĂ©sents dans la branche product depuis develop, + sans importer les nouveaux fichiers. + +✅ Étapes Ă  retenir (avec Git Bash) +Ouvrir Git Bash +(depuis DĂ©marrer → Git Bash) + +Naviguer dans ton projet : + cd "/c/Users/miche/PycharmProjects/Gestion sondes/tools" + Rendre le script exĂ©cutable une seule fois : + chmod +x update_product_from_develop.sh +ExĂ©cuter le script Ă  tout moment : + ./update_product_from_develop.sh + +🔁 RĂ©sultat : + 1) Seuls les fichiers dĂ©jĂ  prĂ©sents dans product sont mis Ă  jour + 2) Les fichiers nouveaux de develop sont ignorĂ©s + 3) Affichage clair de ce qui est mis Ă  jour ou non \ No newline at end of file diff --git a/Purge_alertes.py b/Purge_alertes.py new file mode 100644 index 0000000..54d83d5 --- /dev/null +++ b/Purge_alertes.py @@ -0,0 +1,35 @@ +# Purges des entrĂ©es de toutes les tables dans la base Sondes qui commencent +# par Alertes_*** et qui sont agĂ©es de plus de sept jours. +import mysql.connector +import os +from dotenv import load_dotenv + +# Charger les variables d'environnement +load_dotenv() + +config = { + "host": os.getenv("DB_HOST"), + "user": os.getenv("DB_USER"), + "password": os.getenv("DB_PASSWORD"), + "database": os.getenv("DB_NAME") +} + +conn = mysql.connector.connect(**config) +cursor = conn.cursor() + +# RĂ©cupĂ©rer toutes les tables d'alertes +cursor.execute("SHOW TABLES") +tables = [t[0] for t in cursor.fetchall()] +alertes_tables = [t for t in tables if t.startswith("Alertes_")] + +# Appliquer la purge Ă  chaque table +for table in alertes_tables: + query = f"DELETE FROM {table} WHERE Debut_defaut < NOW() - INTERVAL 7 DAY" + cursor.execute(query) + print(f"✅ Table {table} purgĂ©e.") + +conn.commit() +cursor.close() +conn.close() + +print("🎉 Purge terminĂ©e pour toutes les alertes anciennes.") \ No newline at end of file diff --git a/detect_encodage.py b/detect_encodage.py new file mode 100644 index 0000000..65a0fa1 --- /dev/null +++ b/detect_encodage.py @@ -0,0 +1,16 @@ +import os + +racine = "." # point de dĂ©part = dossier courant + +def detect_fichiers_non_utf8(dossier): + for root, dirs, files in os.walk(dossier): + for file in files: + if file.endswith(".py"): + chemin = os.path.join(root, file) + try: + with open(chemin, encoding="utf-8") as f: + f.read() + except UnicodeDecodeError: + print(f"⚠ Encodage non UTF-8 : {chemin}") + +detect_fichiers_non_utf8(racine) diff --git a/domo91.py b/domo91.py index 3ec8497..46be970 100644 --- a/domo91.py +++ b/domo91.py @@ -32,7 +32,6 @@ db_config = { "database": os.getenv("DB_NAME") } - # --- Fonction de gĂ©nĂ©ration PDF --- def generer_pdf(site, date_str): st.info(f"GĂ©nĂ©ration du rapport PDF pour {site} Ă  la date {date_str}") @@ -124,7 +123,11 @@ if "lieu_autorise" not in st.session_state: st.session_state["lieu_autorise"] = None # --- Connexion utilisateur dans la sidebar --- +<<<<<<< HEAD st.sidebar.header("🔐 Connexion") +======= + st.sidebar.header("🔐 Connexion") +>>>>>>> origin/develop if not st.session_state.get("authenticated"): login = st.sidebar.text_input("Nom d'utilisateur") password = st.sidebar.text_input("Mot de passe", type="password") @@ -271,10 +274,12 @@ if st.session_state["authenticated"]: # --- NAVIGATION --- if st.session_state["role"] == "superviseur": - onglet = st.sidebar.radio("📁 Navigation", ["Accueil", "Statistiques"]) - else: - onglet = "Accueil" + onglet = st.sidebar.radio("📁 Navigation", ["Accueil", "Statistiques", "Traffic"]) +# --- ONGLET ACCUEIL --- + else: + onglet = "Accueil" +>>>>>>> origin/develop if onglet == "Accueil": st.markdown("## SĂ©lection du site et de la date") try: @@ -354,7 +359,11 @@ if st.session_state["authenticated"]: except Exception as e: st.error(f"Erreur MySQL : {e}") +<<<<<<< HEAD +======= +# ---- ONGLET STATISTIQUES --- +>>>>>>> origin/develop elif onglet == "Statistiques": st.markdown("## 📈 Statistiques de tempĂ©rature") try: @@ -485,6 +494,32 @@ if st.session_state["authenticated"]: except Exception as e: st.error(f"Erreur SQL (admin) : {e}") +<<<<<<< HEAD except exception as err: st.error(f"Erreur MySQL : {err}") +======= + +# --- ONGLET TRAFFIC ------ + elif onglet == "Traffic": + st.markdown("## 🚩 Connexions rĂ©centes") + try: + conn = mysql.connector.connect(**db_config) + cursor = conn.cursor(dictionary=True) + cursor.execute( + "SELECT Utilisateur, Lieu, Date_Connexion FROM Connexion_Log ORDER BY Date_Connexion DESC LIMIT 200") + connexions = cursor.fetchall() + cursor.close() + conn.close() + + if connexions: + df_connexions = pd.DataFrame(connexions) + st.dataframe(df_connexions, use_container_width=True) + else: + st.info("Aucune connexion enregistrĂ©e.") + except Exception as e: + st.error(f"Erreur chargement des connexions : {e}") + + except exception as err: + st.error(f"Erreur MySQL : {err}") +>>>>>>> origin/develop diff --git a/tools/update_product_from_develop.sh b/tools/update_product_from_develop.sh new file mode 100644 index 0000000..c4d19b2 --- /dev/null +++ b/tools/update_product_from_develop.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# --------------------------------------------- +# Script : update_product_from_develop.sh +# Objectif : Met Ă  jour les fichiers de 'product' depuis 'develop' +# uniquement pour les fichiers dĂ©jĂ  existants dans product +# --------------------------------------------- + +echo "📁 Branche active : $(git branch --show-current)" + +# VĂ©rification qu'on est bien sur 'product' +current_branch=$(git branch --show-current) +if [ "$current_branch" != "product" ]; then + echo "❌ Tu n'es pas sur la branche 'product'. Abandon." + exit 1 +fi + +# Lister les fichiers prĂ©sents dans 'product' +echo "📄 CrĂ©ation de la liste des fichiers dans 'product'..." +git ls-tree --name-only -r product > product_files.txt + +echo "🔄 Mise Ă  jour des fichiers depuis 'develop'..." + +while IFS= read -r file; do + if git show develop:"$file" > /dev/null 2>&1; then + git checkout develop -- "$file" + echo "✅ Mis Ă  jour : $file" + else + echo "❌ Absent dans develop : $file" + fi +done < product_files.txt + +echo "✅ Mise Ă  jour terminĂ©e." diff --git a/tools/update_product_from_develop.txt b/tools/update_product_from_develop.txt new file mode 100644 index 0000000..e69de29