feat: improve assessments page

This commit is contained in:
2025-08-04 14:27:29 +02:00
parent 04b637f0e6
commit a1e3e4a688
2 changed files with 267 additions and 59 deletions

View File

@@ -11,8 +11,43 @@ bp = Blueprint('assessments', __name__, url_prefix='/assessments')
@handle_db_errors
def list():
from sqlalchemy.orm import joinedload
assessments = Assessment.query.options(joinedload(Assessment.class_group)).order_by(Assessment.date.desc()).all()
return render_template('assessments.html', assessments=assessments)
# Récupérer les paramètres de filtrage
trimester_filter = request.args.get('trimester', '')
class_filter = request.args.get('class', '')
sort_by = request.args.get('sort', 'date_desc')
# Construire la requête de base
query = Assessment.query.options(joinedload(Assessment.class_group))
# Appliquer les filtres
if trimester_filter:
query = query.filter(Assessment.trimester == int(trimester_filter))
if class_filter:
query = query.filter(Assessment.class_group_id == int(class_filter))
# Appliquer le tri
if sort_by == 'date_desc':
query = query.order_by(Assessment.date.desc())
elif sort_by == 'date_asc':
query = query.order_by(Assessment.date.asc())
elif sort_by == 'title':
query = query.order_by(Assessment.title.asc())
elif sort_by == 'class':
query = query.join(ClassGroup).order_by(ClassGroup.name.asc())
assessments = query.all()
# Récupérer toutes les classes pour le filtre
classes = ClassGroup.query.order_by(ClassGroup.name.asc()).all()
return render_template('assessments.html',
assessments=assessments,
classes=classes,
current_trimester=trimester_filter,
current_class=class_filter,
current_sort=sort_by)
# Route obsolète supprimée - utiliser new_unified à la place