feat: improve scale configuration
This commit is contained in:
@@ -179,7 +179,17 @@ def scale():
|
||||
"""Page de configuration de l'échelle de réussite."""
|
||||
try:
|
||||
competence_scale = config_manager.get_competence_scale_values()
|
||||
return render_template('config/scale.html', competence_scale=competence_scale)
|
||||
|
||||
# Récupérer la configuration du dégradé des notes
|
||||
notes_gradient = {
|
||||
'min_color': config_manager.get('grading.notes_gradient.min_color', '#dc2626'),
|
||||
'max_color': config_manager.get('grading.notes_gradient.max_color', '#059669'),
|
||||
'enabled': config_manager.get('grading.notes_gradient.enabled', False)
|
||||
}
|
||||
|
||||
return render_template('config/scale.html',
|
||||
competence_scale=competence_scale,
|
||||
notes_gradient=notes_gradient)
|
||||
except Exception as e:
|
||||
return handle_error(e, "Erreur lors du chargement de l'échelle")
|
||||
|
||||
@@ -205,8 +215,19 @@ def update_scale():
|
||||
|
||||
scale_data[value][field] = form_value
|
||||
|
||||
# Récupérer aussi les paramètres du dégradé de couleurs des notes
|
||||
notes_gradient_min = request.form.get('notes_gradient_color_min')
|
||||
notes_gradient_max = request.form.get('notes_gradient_color_max')
|
||||
|
||||
# Validation des données
|
||||
import re
|
||||
|
||||
# Validation des couleurs du dégradé si présentes
|
||||
if notes_gradient_min and notes_gradient_max:
|
||||
if not re.match(r'^#[0-9a-fA-F]{6}$', notes_gradient_min) or not re.match(r'^#[0-9a-fA-F]{6}$', notes_gradient_max):
|
||||
flash('Format de couleur invalide pour le dégradé', 'error')
|
||||
return redirect(url_for('config.scale'))
|
||||
|
||||
for value, config in scale_data.items():
|
||||
# Vérifier que tous les champs requis sont présents
|
||||
if not all(field in config for field in ['label', 'color', 'included_in_total']):
|
||||
@@ -234,8 +255,22 @@ def update_scale():
|
||||
):
|
||||
success_count += 1
|
||||
|
||||
if success_count == len(scale_data):
|
||||
flash('Échelle de réussite mise à jour avec succès', 'success')
|
||||
# Sauvegarder le dégradé des notes si présent
|
||||
gradient_saved = True
|
||||
if notes_gradient_min and notes_gradient_max:
|
||||
config_manager.set('grading.notes_gradient.min_color', notes_gradient_min)
|
||||
config_manager.set('grading.notes_gradient.max_color', notes_gradient_max)
|
||||
config_manager.set('grading.notes_gradient.enabled', True)
|
||||
gradient_saved = config_manager.save()
|
||||
|
||||
# Messages de succès
|
||||
if success_count == len(scale_data) and gradient_saved:
|
||||
if notes_gradient_min and notes_gradient_max:
|
||||
flash('Paramètres mis à jour avec succès (échelle et dégradé)', 'success')
|
||||
else:
|
||||
flash('Échelle de réussite mise à jour avec succès', 'success')
|
||||
elif success_count == len(scale_data) and not gradient_saved:
|
||||
flash('Échelle mise à jour mais erreur sauvegarde dégradé', 'warning')
|
||||
else:
|
||||
flash(f'Mise à jour partielle : {success_count}/{len(scale_data)} valeurs mises à jour', 'warning')
|
||||
|
||||
@@ -337,6 +372,36 @@ def reset_scale():
|
||||
|
||||
return redirect(url_for('config.scale'))
|
||||
|
||||
|
||||
@bp.route('/scale/notes-gradient', methods=['POST'])
|
||||
def save_notes_gradient():
|
||||
"""Sauvegarder la configuration du dégradé de couleurs pour les notes."""
|
||||
try:
|
||||
min_color = request.form.get('notes_gradient_min_color', '#dc2626')
|
||||
max_color = request.form.get('notes_gradient_max_color', '#059669')
|
||||
|
||||
# Validation des couleurs hexadécimales
|
||||
import re
|
||||
if not re.match(r'^#[0-9a-fA-F]{6}$', min_color) or not re.match(r'^#[0-9a-fA-F]{6}$', max_color):
|
||||
flash('Format de couleur invalide', 'error')
|
||||
return redirect(url_for('config.scale'))
|
||||
|
||||
# Sauvegarder dans la configuration
|
||||
config_manager.set('grading.notes_gradient.min_color', min_color)
|
||||
config_manager.set('grading.notes_gradient.max_color', max_color)
|
||||
config_manager.set('grading.notes_gradient.enabled', True)
|
||||
|
||||
if config_manager.save():
|
||||
flash('Configuration du dégradé de couleurs des notes sauvegardée avec succès', 'success')
|
||||
else:
|
||||
flash('Erreur lors de la sauvegarde', 'error')
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"Erreur sauvegarde dégradé notes: {e}")
|
||||
flash('Erreur lors de la sauvegarde du dégradé', 'error')
|
||||
|
||||
return redirect(url_for('config.scale'))
|
||||
|
||||
@bp.route('/general')
|
||||
def general():
|
||||
"""Page de configuration générale."""
|
||||
|
||||
Reference in New Issue
Block a user