From 1d18b5dd5b0026a1fa83edd87df143a6c6f4e7ca Mon Sep 17 00:00:00 2001 From: Michel Date: Wed, 7 May 2025 09:51:19 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9solution=20des=20conflits=20Git=20et=20n?= =?UTF-8?q?ettoyage=20du=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 18 ++++++ .idea/Fichiers_perso.iml | 2 +- .idea/misc.xml | 2 +- Chat-Id.py | 1 - Societe_Generale.py | 116 +++++++++++++++++---------------------- Telegram_sondes.py | 2 +- Vider_logs_Vps.py | 1 - log_viewer.py | 2 - logs_analyse.py | 6 +- requirements.txt | 27 ++++----- supervisor_watchdog.py | 3 - 11 files changed, 84 insertions(+), 96 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 0000000..41dadd8 --- /dev/null +++ b/.env @@ -0,0 +1,18 @@ +DB_HOST=54.36.188.119 +DB_USER=michel +DB_PASSWORD=#SO2&1nf%mZ@jfh +DB_NAME= SG + +MQTT_HOST=54.36.188.119 +MQTT_USER=Bwps +MQTT_PASSWORD=scJ5ACj2keRfI^ + +# === EMAIL SMTP ===# === EMAIL SMTP === +SMTP_HOST=smtp.mail.ovh.net +SMTP_PORT=465 +SMTP_USER=alertes_saclay@domo91.fr +SMTP_PASSWORD=Kdpke674y23Feq^H +EMAIL_FROM=alertes_saclay@domo91.fr +EMAIL_SACLAY=Cuisine +EMAIL_MEUDON=meudon@domo91.fr +EMAIL_DEFAULT=admin@domo91.fr \ No newline at end of file diff --git a/.idea/Fichiers_perso.iml b/.idea/Fichiers_perso.iml index 53942b5..d8b3f6c 100644 --- a/.idea/Fichiers_perso.iml +++ b/.idea/Fichiers_perso.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index cc70081..2001c7c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/Chat-Id.py b/Chat-Id.py index a5bd401..6dc7d85 100644 --- a/Chat-Id.py +++ b/Chat-Id.py @@ -1,5 +1,4 @@ import requests -import json # Remplace par ton token de bot Telegram token = "8128378340:AAF2sO3gaH1XpMNya_pEslzerqokoCiFRGs" diff --git a/Societe_Generale.py b/Societe_Generale.py index d356c30..d2bc798 100644 --- a/Societe_Generale.py +++ b/Societe_Generale.py @@ -1,87 +1,75 @@ -# Insertion de données da l'app SG. -# Fichier démarré avec la commande dans le terminal >streamlit run Societe_Generale.py import streamlit as st import mysql.connector from dotenv import load_dotenv import os from datetime import datetime +# Chargement des variables d'environnement +load_dotenv() + st.set_page_config(page_title="Insertion Mysql", layout="centered") -st.title("🗓️ Insertion dans une base MySQL") +st.title("📄 Insertion dans SG.Emprunts") -# Charger les identifiants -DB_HOST = ("54.36.188.119") -DB_USER = ("michel") -DB_PASSWORD = ("#SO2&1nf%mZ@jfh") +# Connexion directe à la base SG +conn = mysql.connector.connect( + host=os.getenv("DB_HOST"), + user=os.getenv("DB_USER"), + password=os.getenv("DB_PASSWORD"), + database="SG" # Nom de la base fixe +) +cursor = conn.cursor() -# Connexion sans DB initiale pour lister les bases -@st.cache_data -def get_databases(): - conn = mysql.connector.connect( - host=DB_HOST, - user=DB_USER, - password=DB_PASSWORD - ) - cursor = conn.cursor() - cursor.execute("SHOW DATABASES") - bases = [db[0] for db in cursor.fetchall()] - conn.close() - return bases +# Table fixe +table = "Emprunts" -# Connexion avec DB sélectionnée -def connect_to_db(db_name): - return mysql.connector.connect( - host=DB_HOST, - user=DB_USER, - password=DB_PASSWORD, - database=db_name - ) +# Lecture des colonnes de la table +cursor.execute(f"DESCRIBE {table}") +colonnes = cursor.fetchall() -# --- Interface principale --- +# Détection de la clé primaire +cursor.execute(f"SHOW INDEX FROM {table} WHERE Key_name = 'PRIMARY'") +pk = cursor.fetchone() +primary_key = pk[4] if pk else None -base = st.selectbox("Choisir une base de données", get_databases()) -if base: - conn = connect_to_db(base) - cursor = conn.cursor() +# Sélection champ date +champ_date_candidates = [col[0] for col in colonnes if "date" in col[1].lower()] +champ_date = st.selectbox("Champ de date", champ_date_candidates) - cursor.execute("SHOW TABLES") - tables = [table[0] for table in cursor.fetchall()] - table = st.selectbox("Choisir une table", tables) +# Paramètres d’insertion +nb_mois = st.number_input("Nombre d'insertions mensuelles", 1, 36, 6) +date_depart = st.date_input("Date de départ des insertions", value=datetime.today().date()) - if table: - cursor.execute(f"DESCRIBE {table}") - colonnes = cursor.fetchall() +# Champs modifiables +champs_editables = [col for col in colonnes if col[0] != primary_key and col[0] != champ_date] +champs_choisis = [] +st.subheader("Champs à insérer (hors clé primaire et champ de date)") +for col in champs_editables: + if st.checkbox(f"{col[0]} ({col[1]})", value=True): + champs_choisis.append(col[0]) - # Détection clé primaire - cursor.execute(f"SHOW INDEX FROM {table} WHERE Key_name = 'PRIMARY'") - pk = cursor.fetchone() - primary_key = pk[4] if pk else None +# Formulaire principal +if champs_choisis: + with st.form(key="formulaire_emprunts"): + st.markdown("**Valeurs fixes pour les champs cochés**") + valeurs_fixes = {} - champ_date_candidates = [col[0] for col in colonnes if "date" in col[1].lower()] - champ_date = st.selectbox("Champ de date", champ_date_candidates) + for champ in champs_choisis: + col_type = next((c[1] for c in colonnes if c[0] == champ), "").lower() - nb_mois = st.number_input("Nombre d'insertions mensuelles", 1, 36, 6) - date_depart = st.date_input("Date de départ des insertions", value=datetime.today().date()) - st.subheader("Champs à insérer (hors clé primaire et champ de date)") - champs_choisis = [] - champs_editables = [col for col in colonnes if col[0] != primary_key and col[0] != champ_date] - for col in champs_editables: - if st.checkbox(f"{col[0]} ({col[1]})", value=True): - champs_choisis.append(col[0]) + if "int" in col_type: + val = st.number_input(champ, step=1) + elif "decimal" in col_type or "float" in col_type: + val = st.number_input(champ, format="%.2f") + else: + val = st.text_input(champ) - with st.form("formulaire_insertion"): - st.markdown("**Valeurs fixes pour les champs cochés**") - valeurs_fixes = {} - for nom in champs_choisis: - val = st.text_input(nom) - valeurs_fixes[nom] = val if val != "" else None + valeurs_fixes[champ] = val - submit = st.form_submit_button("Insérer") + submit = st.form_submit_button("Insérer") + if submit: try: - cursor = conn.cursor() insert_count = 0 - for i in range(nb_mois): year = date_depart.year + (date_depart.month + i - 1) // 12 month = (date_depart.month + i - 1) % 12 + 1 @@ -100,7 +88,3 @@ if base: except Exception as e: st.error(f"❌ Erreur lors de l’insertion : {e}") - - conn.commit() - st.success(f"{insert_count} lignes insérées avec succès dans `{table}`.") -st.success(f"{insert_count} lignes insérées avec succès.") \ No newline at end of file diff --git a/Telegram_sondes.py b/Telegram_sondes.py index 3077d92..997c4d6 100644 --- a/Telegram_sondes.py +++ b/Telegram_sondes.py @@ -1,4 +1,4 @@ -# Gestion des chambres froides & alertes Telegram +# -*- coding: utf-8 -*- import requests import mysql.connector from datetime import datetime, timedelta diff --git a/Vider_logs_Vps.py b/Vider_logs_Vps.py index 2fcc143..cb602f5 100644 --- a/Vider_logs_Vps.py +++ b/Vider_logs_Vps.py @@ -1,5 +1,4 @@ import paramiko - # Configuration hostname = "54.36.188.119" port = 22 diff --git a/log_viewer.py b/log_viewer.py index 922b6d2..2d8f05e 100644 --- a/log_viewer.py +++ b/log_viewer.py @@ -1,5 +1,3 @@ -import os -import time # 📁 Dossier contenant les fichiers de logs DOSSIER_LOGS = "/var/log" diff --git a/logs_analyse.py b/logs_analyse.py index 5630e30..4d5c701 100644 --- a/logs_analyse.py +++ b/logs_analyse.py @@ -19,12 +19,12 @@ date_selection = st.selectbox("📅 Sélectionnez une date :", dates_dispo) lieux = sorted(df["Lieu"].unique()) lieu_selection = st.selectbox("📍 Site :", lieux) -df_filtré = df[(df["Date_str"] == date_selection) & (df["Lieu"] == lieu_selection)] +df_filtre = df[(df["Date_str"] == date_selection) & (df["Lieu"] == lieu_selection)] -sondes = sorted(df_filtré["Sonde"].unique()) +sondes = sorted(df_filtre["Sonde"].unique()) sonde_selection = st.selectbox("🧪 Sonde :", sondes) -df_sonde = df_filtré[df_filtré["Sonde"] == sonde_selection] +df_sonde = df_filtre[df_filtre["Sonde"] == sonde_selection] # --- Graphique température --- fig, ax = plt.subplots(figsize=(10, 4)) diff --git a/requirements.txt b/requirements.txt index 3a782b2..1557de6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,17 +1,10 @@ -colorama==0.4.6 -cryptography==44.0.2 -filelock==3.18.0 -matplotlib==3.10.1 -mysql_connector_repackaged==0.3.1 -paho_mqtt==2.1.0 -pandas==2.2.3 -paramiko==3.5.1 -Pillow==11.2.1 -protobuf==6.30.2 -pyOpenSSL==25.0.0 -python-dotenv==1.1.0 -redis==5.2.1 -schedule==1.2.2 -sphinx==8.2.3 -streamlit==1.44.1 -urllib3_secure_extra==0.1.0 \ No newline at end of file +mysql-connector-python~=9.2.0 +pandas~=2.2.3 +streamlit~=1.44.1 +matplotlib~=3.10.1 +paho-mqtt~=2.1.0 +requests~=2.32.3 +schedule~=1.2.2 +paramiko~=3.5.1 +dotenv + diff --git a/supervisor_watchdog.py b/supervisor_watchdog.py index 76a7834..c7e8b68 100644 --- a/supervisor_watchdog.py +++ b/supervisor_watchdog.py @@ -1,6 +1,3 @@ -# Controle des services supervisor envoi en cas de disfonction et tous les jours à sept heures -# a faire tourner avec crontb -e en sudo -# */30 * * * * /home/debian/travail/myenv/bin/python3 /home/debian/travail/Scripts/supervisor_watchdog.py import subprocess import smtplib from email.mime.text import MIMEText