Files
notytex/forms.py

44 lines
2.4 KiB
Python

from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, FloatField, SelectField, DateField, SubmitField
from wtforms.validators import DataRequired, Email, NumberRange, Optional, Length
from datetime import date
from models import ClassGroup
# Utilitaire pour éviter la duplication dans l'initialisation des choix de classe
def _populate_class_choices(field):
"""Remplit les choix d'un champ SelectField avec les classes disponibles."""
field.choices = [(cg.id, cg.name) for cg in ClassGroup.query.order_by(ClassGroup.name).all()]
class AssessmentForm(FlaskForm):
title = StringField('Titre', validators=[DataRequired(), Length(max=200)])
description = TextAreaField('Description', validators=[Optional()])
date = DateField('Date', validators=[DataRequired()], default=date.today)
trimester = SelectField('Trimestre', validators=[DataRequired()], coerce=int,
choices=[(1, '1er trimestre'), (2, '2ème trimestre'), (3, '3ème trimestre')])
class_group_id = SelectField('Classe', validators=[DataRequired()], coerce=int)
coefficient = FloatField('Coefficient', validators=[DataRequired(), NumberRange(min=0.1, max=10)], default=1.0)
submit = SubmitField('Enregistrer')
def __init__(self, *args, **kwargs):
super(AssessmentForm, self).__init__(*args, **kwargs)
_populate_class_choices(self.class_group_id)
class ClassGroupForm(FlaskForm):
name = StringField('Nom de la classe', validators=[DataRequired(), Length(max=100)])
description = TextAreaField('Description', validators=[Optional()])
year = StringField('Année scolaire', validators=[DataRequired(), Length(max=20)], default="2024-2025")
submit = SubmitField('Enregistrer')
class StudentForm(FlaskForm):
first_name = StringField('Prénom', validators=[DataRequired(), Length(max=100)])
last_name = StringField('Nom', validators=[DataRequired(), Length(max=100)])
email = StringField('Email', validators=[Optional(), Email(), Length(max=120)])
class_group_id = SelectField('Classe', validators=[DataRequired()], coerce=int)
submit = SubmitField('Enregistrer')
def __init__(self, *args, **kwargs):
super(StudentForm, self).__init__(*args, **kwargs)
_populate_class_choices(self.class_group_id)
# Formulaires ExerciseForm et GradingElementForm supprimés
# Ces éléments sont maintenant gérés via le formulaire unifié AssessmentForm