refact: use repositories patterns for classes

This commit is contained in:
2025-08-08 06:04:55 +02:00
parent 35bf575125
commit 5c25723e4f
13 changed files with 2325 additions and 54 deletions

View File

@@ -1,8 +1,8 @@
from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify, current_app
from models import db, ClassGroup
from models import db
from forms import AssessmentForm
from services import AssessmentService
from repositories import AssessmentRepository
from repositories import AssessmentRepository, ClassRepository
from utils import handle_db_errors, ValidationError
bp = Blueprint('assessments', __name__, url_prefix='/assessments')
@@ -11,6 +11,7 @@ bp = Blueprint('assessments', __name__, url_prefix='/assessments')
@handle_db_errors
def list():
assessment_repo = AssessmentRepository()
class_repo = ClassRepository()
# Récupérer les paramètres de filtrage
trimester_filter = request.args.get('trimester', '')
@@ -30,7 +31,7 @@ def list():
total_assessments = assessment_repo.find_by_filters()
# Récupérer toutes les classes pour le filtre
classes = ClassGroup.query.order_by(ClassGroup.name.asc()).all()
classes = class_repo.find_for_form_choices()
return render_template('assessments.html',
assessments=assessments,
@@ -115,8 +116,10 @@ def _handle_unified_assessment_request(form, assessment=None, is_edit=False):
@handle_db_errors
def edit(id):
assessment_repo = AssessmentRepository()
class_repo = ClassRepository()
assessment = assessment_repo.get_with_full_details_or_404(id)
form = AssessmentForm(obj=assessment)
form.populate_class_choices(class_repo)
result = _handle_unified_assessment_request(form, assessment, is_edit=True)
if result:
@@ -163,7 +166,9 @@ def edit(id):
@handle_db_errors
def new():
from app_config import config_manager
class_repo = ClassRepository()
form = AssessmentForm()
form.populate_class_choices(class_repo)
result = _handle_unified_assessment_request(form, is_edit=False)
if result: