import logging from pathlib import Path from flask import Blueprint, render_template, current_app # Import de notre fonction utilitaire from .utils import build_image_structure # Création d'un Blueprint (collection de routes) nommé 'gallery' app = Blueprint('gallery', __name__) @app.route('/') def index() -> str: """Affiche la galerie d'images de manière robuste.""" # On utilise pathlib pour construire le chemin image_dir = Path(current_app.static_folder) / 'images' try: # On appelle notre fonction pour construire la structure de données structured_images = build_image_structure(image_dir) error_message = None if not structured_images: error_message = "Aucune image valide n'a été trouvée dans la galerie." except Exception as e: logging.error(f"Une erreur est survenue lors de la création de la galerie : {e}") structured_images = {} error_message = "Une erreur serveur a empêché l'affichage de la galerie." return render_template( 'gallery.html', structured_images=structured_images, error_message=error_message ) @app.route('/api/images') def api_images(): """Retourne la liste des images de la galerie au format JSON.""" image_dir = Path(current_app.static_folder) / 'images' try: structured_images = build_image_structure(image_dir) if not structured_images: # On retourne le dictionnaire d'erreur et le code de statut # Flask s'occupe de la conversion en JSON return {'error': "Aucune image n'a été trouvée"}, 404 # On retourne directement le dictionnaire des images # Flask s'occupe du reste ! return structured_images, 200 # Le 200 (OK) est le défaut, mais c'est bien d'être explicite except Exception as e: logging.error(f"Erreur API lors de la récupération des images : {e}") # Idem pour l'erreur serveur return {'error': "Erreur interne du serveur"}, 500