Skip to content

Instantly share code, notes, and snippets.

# ================================================================================
# Script d'Audit COMPLET v9.2 - VERSION FINALE EXHAUSTIVE + REDÉFINITION MIGRATION
# Auteur: Assistant IA Spécialisé
# Version: 9.2.0 FINALE - TOUTES FONCTIONNALITÉS + TEMPLATE REDÉFINITION MIGRATION
# Description: Audit exhaustif + Arborescence + Copie + Templates + Redéfinition
# Date: 2024 - VERSION DE PRODUCTION
# ================================================================================
param(
[Parameter(Mandatory=$false)]
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestionnaire d'Annuaires Multi-Projets</title>
<!-- Librairies JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.0/Sortable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestionnaire d'Annuaires Multi-Projets</title>
<!-- Librairies JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.0/Sortable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestionnaire d'Annuaires Multi-Projets</title>
<!-- Librairies JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.0/Sortable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
[main.py CONTOURNEMENT PRE-IMPORT] Application non gelée (mode développement).
--- MailPrinterApp: Début du Script Principal ---
Nettoyage au démarrage pour les dossiers basés sur: C:\Users\kbivia\AppData\Local\MailPrinterApp
Startup Info: Fichier log principal supprimé: C:\Users\kbivia\AppData\Local\MailPrinterApp\app.log
Startup Info: Nettoyage du dossier temporaire: C:\Users\kbivia\AppData\Local\MailPrinterApp\temp_mailprinter
Startup Info: Dossier temporaire C:\Users\kbivia\AppData\Local\MailPrinterApp\temp_mailprinter supprimé.
Startup Info: Dossier temporaire C:\Users\kbivia\AppData\Local\MailPrinterApp\temp_mailprinter vérifié/créé.
--- MailPrinterApp: Nettoyage de Démarrage Terminé ---
2025-06-13 14:23:45,858 - mail_printer_flask - INFO - [MainThread] - Configuration du logging terminée.
2025-06-13 14:23:45,888 - mail_printer_flask - INFO - [MainThread] - Imports des modules de service personnalisés réussis.
import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import customtkinter as ctk
import os
import stat
import json
from datetime import datetime
from pathlib import Path
import threading
from reportlab.lib import colors
import sys
import os
# Ce bloc doit être exécuté avant TOUT autre import de votre application
# pour s'assurer que sys.path est correctement configuré.
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
print(f"[main.py CONTOURNEMENT PRE-IMPORT] Application gelée détectée.")
print(f"[main.py CONTOURNEMENT PRE-IMPORT] sys.executable: {sys.executable}")
print(f"[main.py CONTOURNEMENT PRE-IMPORT] sys._MEIPASS: {sys._MEIPASS}")
print(f"[main.py CONTOURNEMENT PRE-IMPORT] sys.path initial: {sys.path}")
if sys._MEIPASS not in sys.path:
index.htlm <!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tableau de Bord - Impression Automatisée - V2025 par KB</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastify-js/1.12.0/toastify.min.css">
<style>
index.html: <html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tableau de Bord - Impression Automatisée - V2025 par KB</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastify-js/1.12.0/toastify.min.css">
<style>
:root {
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tableau de Bord - Impression Automatisée - V2025 par KB</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastify-js/1.12.0/toastify.min.css">
<style>
:root {