diff --git a/app/forms/assiduite/ajout_assiduite_etud.py b/app/forms/assiduite/ajout_assiduite_etud.py index 2c83f0f5c..26a14ed6b 100644 --- a/app/forms/assiduite/ajout_assiduite_etud.py +++ b/app/forms/assiduite/ajout_assiduite_etud.py @@ -47,7 +47,19 @@ class AjoutAssiOrJustForm(FlaskForm): assiduité et justificatif """ - error_message = "" # used to report our errors + def __init__(self, *args, **kwargs): + "Init form, adding a filed for our error messages" + super().__init__(*args, **kwargs) + self.ok = True + self.error_messages: list[str] = [] # used to report our errors + + def set_error(self, err_msg, field=None): + "Set error message both in form and field" + self.ok = False + self.error_messages.append(err_msg) + if field: + field.errors.append(err_msg) + date_debut = StringField( "Date de début", validators=[validators.Length(max=10)], diff --git a/app/models/assiduites.py b/app/models/assiduites.py index 2c116d49a..4cd5318b5 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -148,6 +148,9 @@ class Assiduite(db.Model): # Vérification de non duplication des périodes assiduites: Query = etud.assiduites if is_period_conflicting(date_debut, date_fin, assiduites, Assiduite): + log( + f"create_assiduite: period_conflicting etudid={etud.id} date_debut={date_debut} date_fin={date_fin}" + ) raise ScoValueError( "Duplication: la période rentre en conflit avec une plage enregistrée" ) @@ -215,10 +218,10 @@ class Assiduite(db.Model): # ci-dessous un fix temporaire en attendant explication de @iziram try: moduleimpl_id_int = int(moduleimpl_id) - except ValueError: - raise ScoValueError("invalid moduleimpl_id") + except ValueError as exc: + raise ScoValueError("invalid moduleimpl_id") from exc # /fix - moduleimpl: ModuleImpl = ModuleImpl.query.get(moduleimpl_id) + moduleimpl: ModuleImpl = ModuleImpl.query.get(moduleimpl_id_int) if moduleimpl is not None: # Vérification de l'inscription de l'étudiant if moduleimpl.est_inscrit(self.etudiant): diff --git a/app/models/moduleimpls.py b/app/models/moduleimpls.py index 7b9c35968..00966033e 100644 --- a/app/models/moduleimpls.py +++ b/app/models/moduleimpls.py @@ -194,9 +194,9 @@ class ModuleImpl(db.Model): def est_inscrit(self, etud: Identite) -> bool: """ - Vérifie si l'étudiant est bien inscrit au moduleimpl - - Retourne Vrai si c'est le cas, faux sinon + Vérifie si l'étudiant est bien inscrit au moduleimpl (même si DEM ou DEF au semestre). + (lent, pas de cache: pour un accès rapide, utiliser nt.modimpl_inscr_df). + Retourne Vrai si inscrit au module, faux sinon. """ is_module: int = ( diff --git a/app/templates/assiduites/pages/ajout_assiduite_etud.j2 b/app/templates/assiduites/pages/ajout_assiduite_etud.j2 index 850a0d7ec..711ae5f26 100644 --- a/app/templates/assiduites/pages/ajout_assiduite_etud.j2 +++ b/app/templates/assiduites/pages/ajout_assiduite_etud.j2 @@ -53,11 +53,11 @@ div.submit > input {