feat: improve fullscreen mode
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from flask import Blueprint, render_template, redirect, url_for, flash, request
|
||||
from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify
|
||||
from models import db, Assessment, Student, Grade, GradingElement, Exercise
|
||||
from app_config import config_manager
|
||||
|
||||
@@ -35,7 +35,9 @@ def assessment_grading(assessment_id):
|
||||
@bp.route('/assessments/<int:assessment_id>/grading/save', methods=['POST'])
|
||||
def save_grades(assessment_id):
|
||||
assessment = Assessment.query.get_or_404(assessment_id)
|
||||
errors = []
|
||||
|
||||
try:
|
||||
for key, value in request.form.items():
|
||||
if key.startswith('grade_'):
|
||||
# Parse key: grade_<student_id>_<element_id>
|
||||
@@ -73,9 +75,9 @@ def save_grades(assessment_id):
|
||||
else:
|
||||
grade.value = normalized_value
|
||||
else:
|
||||
flash(f'Valeur invalide pour {grading_element.label if grading_element else "cet élément"}: {value}', 'warning')
|
||||
errors.append(f'Valeur invalide pour {grading_element.label if grading_element else "cet élément"}: {value}')
|
||||
else:
|
||||
flash(f'Élément de notation non trouvé: {element_id}', 'error')
|
||||
errors.append(f'Élément de notation non trouvé: {element_id}')
|
||||
elif grade: # If value is empty but grade exists, delete it
|
||||
db.session.delete(grade)
|
||||
|
||||
@@ -96,5 +98,35 @@ def save_grades(assessment_id):
|
||||
grade.comment = value.strip() if value.strip() else None
|
||||
|
||||
db.session.commit()
|
||||
|
||||
# Check if it's an AJAX request
|
||||
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
if errors:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': 'Certaines notes n\'ont pas pu être sauvegardées',
|
||||
'errors': errors
|
||||
})
|
||||
else:
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'message': 'Notes sauvegardées avec succès !'
|
||||
})
|
||||
else:
|
||||
# Traditional form submission
|
||||
if errors:
|
||||
for error in errors:
|
||||
flash(error, 'warning')
|
||||
flash('Notes sauvegardées avec succès !', 'success')
|
||||
return redirect(url_for('grading.assessment_grading', assessment_id=assessment_id))
|
||||
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': f'Erreur lors de la sauvegarde: {str(e)}'
|
||||
}), 500
|
||||
else:
|
||||
flash(f'Erreur lors de la sauvegarde: {str(e)}', 'error')
|
||||
return redirect(url_for('grading.assessment_grading', assessment_id=assessment_id))
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user