From a1e3e4a68842e5c05ce70719ff5edef25ff14812 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Mon, 4 Aug 2025 14:27:29 +0200 Subject: [PATCH] feat: improve assessments page --- routes/assessments.py | 39 ++++- templates/assessments.html | 287 +++++++++++++++++++++++++++++-------- 2 files changed, 267 insertions(+), 59 deletions(-) diff --git a/routes/assessments.py b/routes/assessments.py index 9b3e7f5..fe36253 100644 --- a/routes/assessments.py +++ b/routes/assessments.py @@ -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 diff --git a/templates/assessments.html b/templates/assessments.html index d44d66b..e14a6f7 100644 --- a/templates/assessments.html +++ b/templates/assessments.html @@ -3,76 +3,249 @@ {% block title %}Évaluations - Gestion Scolaire{% endblock %} {% block content %} -
-
-

Gestion des évaluations

-
- - ✨ Nouvelle évaluation - +
+ +
+
+
+

Mes Évaluations 📚

+

Gérez et organisez toutes vos évaluations

+
+ + + + + + {{ assessments|length }} évaluations + + + + + + Année scolaire 2024-2025 + +
+
+ +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+ + +
+ {{ assessments|length }} évaluation(s) +
+
+
{% if assessments %} -
-
    - {% for assessment in assessments %} -
  • -
    -
    -
    -
    -
    - - - - -
    -
    -
    -
    {{ assessment.title }}
    -
    - {{ assessment.class_group.name }} - {{ assessment.date.strftime('%d/%m/%Y') }} - - Trimestre {{ assessment.trimester }} - Coefficient {{ assessment.coefficient }} -
    - {% if assessment.description %} -
    {{ assessment.description[:100] }}{% if assessment.description|length > 100 %}...{% endif %}
    - {% endif %} -
    - {{ assessment.exercises|length }} exercice(s) -
    -
    + +
    + {% for assessment in assessments %} + {% set trimester_colors = { + 1: {'bg': 'from-blue-500 to-blue-600', 'accent': 'blue', 'icon_bg': 'bg-blue-100', 'icon_text': 'text-blue-600'}, + 2: {'bg': 'from-green-500 to-green-600', 'accent': 'green', 'icon_bg': 'bg-green-100', 'icon_text': 'text-green-600'}, + 3: {'bg': 'from-orange-500 to-orange-600', 'accent': 'orange', 'icon_bg': 'bg-orange-100', 'icon_text': 'text-orange-600'} + } %} + {% set colors = trimester_colors[assessment.trimester] %} + +
    + +
    +
    +
    +
    + + + +
    - +
    {{ assessment.date.strftime('%d/%m/%Y') }}
    +
    +
    + + +
    +

    {{ assessment.title }}

    + + +
    +
    + + + + {{ assessment.class_group.name }} +
    + +
    +
    + + + + {{ assessment.exercises|length }} exercice(s) +
    + +
    + Coeff. {{ assessment.coefficient }}
    -
  • - {% endfor %} -
+ + {% if assessment.description %} +

{{ assessment.description }}

+ {% endif %} + + + +
+
+ {% endfor %}
{% else %} -
- - - -

Aucune évaluation

-

Commencez par créer votre première évaluation.

- + + + {% endblock %} \ No newline at end of file