From ff70d6bb848d58f4dcca4b63ebf643d2f8b0b0e2 Mon Sep 17 00:00:00 2001 From: Johan Date: Tue, 16 Dec 2025 14:23:29 +0100 Subject: [PATCH] TP done --- src/app/views.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/app/views.py b/src/app/views.py index 9251f9a..3e8afec 100644 --- a/src/app/views.py +++ b/src/app/views.py @@ -8,4 +8,53 @@ from .utils import build_image_structure # Création d'un Blueprint (collection de routes) nommé 'gallery' app = Blueprint('gallery', __name__) -# TODO : votre code ici (cf énoncé) + +@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 +