Code source de services.api_ihm.src.database.init_folders

"""
Version: 1.2.0 (2023-12-20)
Auteur: Kahina et franck - Groupe 2
Commit: bigmoletos@yopmail.com

Script d'initialisation de la structure des dossiers de l'application.

Ce module gère la création et la vérification des dossiers nécessaires
au bon fonctionnement de l'application, notamment:
- Le dossier database pour les fichiers SQLite
- Le dossier instance pour les données spécifiques à l'instance
- Les fichiers .gitkeep pour la gestion Git

Architecture:
------------
1. Structure des dossiers:
   - database/ : Stockage des bases de données
   - instance/ : Configuration spécifique
   - .gitkeep : Maintien des dossiers vides

2. Gestion des permissions:
   - Création sécurisée des dossiers
   - Vérification des droits d'accès
   - Gestion des erreurs

3. Logging:
   - Traçage des opérations
   - Rapport des erreurs
   - Validation de la structure

Utilisation:
-----------
    python init_folders.py

Dépendances:
-----------
    - pathlib : Manipulation des chemins
    - logging : Journalisation
"""

import os
from pathlib import Path
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


[docs] def init_folders(): """ Initialise la structure des dossiers de l'application. Cette fonction: 1. Crée les dossiers nécessaires s'ils n'existent pas 2. Ajoute les fichiers .gitkeep pour Git 3. Vérifie les permissions et l'accès Structure créée: -------------- project_root/ ├── database/ │ └── .gitkeep └── instance/ └── .gitkeep Notes: ----- - Utilise pathlib pour la portabilité - Crée les dossiers parents si nécessaire - Ne supprime pas les dossiers existants - Ajoute .gitkeep pour maintenir les dossiers vides Raises: ------ Exception En cas d'erreur de création ou de permissions Les erreurs sont loggées avec contexte """ # Chemin de base base_path = Path(__file__).parent.parent # Dossiers à créer folders = [base_path / 'database', base_path / 'instance'] for folder in folders: try: folder.mkdir(exist_ok=True) gitkeep = folder / '.gitkeep' gitkeep.touch(exist_ok=True) logger.info(f"Dossier créé/vérifié : {folder}") except Exception as e: logger.error( f"Erreur lors de la création du dossier {folder}: {e}")
if __name__ == "__main__": init_folders()