feat: add temporal student gestion

This commit is contained in:
2025-08-16 06:42:47 +02:00
parent f438082c4c
commit 6549591f63
15 changed files with 2212 additions and 148 deletions

23
app.py
View File

@@ -14,6 +14,7 @@ from routes.grading import bp as grading_bp
from routes.config import bp as config_bp
from routes.domains import bp as domains_bp
from routes.classes import bp as classes_bp
# from routes.student_movements import bp as student_movements_bp # Désactivé car page supprimée
def create_app(config_name=None):
if config_name is None:
@@ -45,6 +46,7 @@ def create_app(config_name=None):
app.register_blueprint(config_bp)
app.register_blueprint(domains_bp)
app.register_blueprint(classes_bp)
# app.register_blueprint(student_movements_bp) # Désactivé car page supprimée
# Register CLI commands
app.cli.add_command(init_db)
@@ -84,10 +86,23 @@ def create_app(config_name=None):
@app.route('/students')
def students():
try:
# Optimisation: utiliser joinedload pour éviter les requêtes N+1
student_repo = StudentRepository()
students = student_repo.find_all_with_class_ordered()
return render_template('students.html', students=students)
# Utilisation du repository temporel pour récupérer tous les élèves avec leur classe actuelle
from repositories.temporal_student_repository import TemporalStudentRepository
from models import Student
temporal_repo = TemporalStudentRepository()
all_students = Student.query.order_by(Student.last_name, Student.first_name).all()
# Enrichir chaque élève avec sa classe actuelle
students_with_classes = []
for student in all_students:
current_class = student.get_current_class()
students_with_classes.append({
'student': student,
'current_class': current_class
})
return render_template('students.html', students_with_classes=students_with_classes)
except Exception as e:
app.logger.error(f'Erreur lors du chargement des étudiants: {e}')
return render_template('error.html', error="Erreur lors du chargement des étudiants"), 500