Files
ENI-PythonAdvanced_05/src/app/views.py
2025-12-16 14:23:29 +01:00

61 lines
2.0 KiB
Python

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