clean: clean python code
This commit is contained in:
		| @@ -1,44 +1,28 @@ | ||||
| from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify, current_app | ||||
| from models import db, Assessment, ClassGroup | ||||
| from models import db, ClassGroup | ||||
| from forms import AssessmentForm | ||||
| # Import du service avec rétrocompatibilité gérée dans services/__init__.py | ||||
| from services import AssessmentService | ||||
| from repositories import AssessmentRepository | ||||
| from utils import handle_db_errors, ValidationError | ||||
| from datetime import datetime | ||||
|  | ||||
| bp = Blueprint('assessments', __name__, url_prefix='/assessments') | ||||
|  | ||||
| @bp.route('/') | ||||
| @handle_db_errors | ||||
| def list(): | ||||
|     from sqlalchemy.orm import joinedload | ||||
|     assessment_repo = AssessmentRepository() | ||||
|      | ||||
|     # 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() | ||||
|     # Utiliser le repository pour les filtres | ||||
|     assessments = assessment_repo.find_by_filters( | ||||
|         trimester=int(trimester_filter) if trimester_filter else None, | ||||
|         class_id=int(class_filter) if class_filter else None, | ||||
|         sort_by=sort_by | ||||
|     ) | ||||
|      | ||||
|     # Récupérer toutes les classes pour le filtre | ||||
|     classes = ClassGroup.query.order_by(ClassGroup.name.asc()).all() | ||||
| @@ -55,12 +39,8 @@ def list(): | ||||
| @bp.route('/<int:id>') | ||||
| @handle_db_errors | ||||
| def detail(id): | ||||
|     from sqlalchemy.orm import joinedload | ||||
|     from models import Exercise, GradingElement | ||||
|     assessment = Assessment.query.options( | ||||
|         joinedload(Assessment.class_group), | ||||
|         joinedload(Assessment.exercises).joinedload(Exercise.grading_elements) | ||||
|     ).get_or_404(id) | ||||
|     assessment_repo = AssessmentRepository() | ||||
|     assessment = assessment_repo.get_with_full_details_or_404(id) | ||||
|     return render_template('assessment_detail.html', assessment=assessment) | ||||
|  | ||||
| def _handle_unified_assessment_request(form, assessment=None, is_edit=False): | ||||
| @@ -127,12 +107,8 @@ def _handle_unified_assessment_request(form, assessment=None, is_edit=False): | ||||
| @bp.route('/<int:id>/edit', methods=['GET', 'POST']) | ||||
| @handle_db_errors | ||||
| def edit(id): | ||||
|     from sqlalchemy.orm import joinedload | ||||
|     from models import Exercise, GradingElement | ||||
|     assessment = Assessment.query.options( | ||||
|         joinedload(Assessment.class_group), | ||||
|         joinedload(Assessment.exercises).joinedload(Exercise.grading_elements) | ||||
|     ).get_or_404(id) | ||||
|     assessment_repo = AssessmentRepository() | ||||
|     assessment = assessment_repo.get_with_full_details_or_404(id) | ||||
|     form = AssessmentForm(obj=assessment) | ||||
|      | ||||
|     result = _handle_unified_assessment_request(form, assessment, is_edit=True) | ||||
| @@ -199,13 +175,8 @@ def new(): | ||||
| @bp.route('/<int:id>/results') | ||||
| @handle_db_errors | ||||
| def results(id): | ||||
|     from sqlalchemy.orm import joinedload | ||||
|     from models import Exercise, GradingElement | ||||
|      | ||||
|     assessment = Assessment.query.options( | ||||
|         joinedload(Assessment.class_group), | ||||
|         joinedload(Assessment.exercises).joinedload(Exercise.grading_elements) | ||||
|     ).get_or_404(id) | ||||
|     assessment_repo = AssessmentRepository() | ||||
|     assessment = assessment_repo.get_with_full_details_or_404(id) | ||||
|      | ||||
|     # Calculer les scores des élèves | ||||
|     students_scores, exercise_scores = assessment.calculate_student_scores() | ||||
| @@ -231,7 +202,8 @@ def results(id): | ||||
| @bp.route('/<int:id>/delete', methods=['POST']) | ||||
| @handle_db_errors | ||||
| def delete(id): | ||||
|     assessment = Assessment.query.get_or_404(id) | ||||
|     assessment_repo = AssessmentRepository() | ||||
|     assessment = assessment_repo.get_or_404(id) | ||||
|     title = assessment.title  # Conserver pour le log | ||||
|     db.session.delete(assessment) | ||||
|     db.session.commit() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user