diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py index 2f1637fbb..5b17c814a 100644 --- a/app/but/bulletin_but.py +++ b/app/but/bulletin_but.py @@ -153,7 +153,12 @@ class BulletinBUT: self.etud_eval_results(etud, e) for e in modimpl.evaluations if e.visibulletin - and modimpl_results.evaluations_etat[e.id].is_complete + and ( + modimpl_results.evaluations_etat[e.id].is_complete + or sco_preferences.get_preference( + "bul_show_all_evals", res.formsemestre.id + ) + ) ], } return d diff --git a/app/forms/main/config_logos.py b/app/forms/main/config_logos.py index 91a73747a..2be78713d 100644 --- a/app/forms/main/config_logos.py +++ b/app/forms/main/config_logos.py @@ -119,9 +119,9 @@ class AddLogoForm(FlaskForm): label="Nom", validators=[ validators.regexp( - r"^[a-zA-Z0-9-]*$", + r"^[a-zA-Z0-9-_]*$", re.IGNORECASE, - "Ne doit comporter que lettres, chiffres ou -", + "Ne doit comporter que lettres, chiffres, _ ou -", ), validators.Length( max=20, message="Un nom ne doit pas dépasser 20 caractères" diff --git a/app/scodoc/notes_table.py b/app/scodoc/notes_table.py index a9aaf7e16..d014d9faf 100644 --- a/app/scodoc/notes_table.py +++ b/app/scodoc/notes_table.py @@ -171,7 +171,7 @@ class NotesTable: def __init__(self, formsemestre_id): # log(f"NotesTable( formsemestre_id={formsemestre_id} )") - raise NotImplementedError() # XXX + # raise NotImplementedError() # XXX if not formsemestre_id: raise ValueError("invalid formsemestre_id (%s)" % formsemestre_id) self.formsemestre_id = formsemestre_id diff --git a/app/scodoc/sco_evaluation_edit.py b/app/scodoc/sco_evaluation_edit.py index 2f5efbc4e..5b41941cd 100644 --- a/app/scodoc/sco_evaluation_edit.py +++ b/app/scodoc/sco_evaluation_edit.py @@ -139,6 +139,7 @@ def evaluation_create_form( initvalues["visibulletinlist"] = ["X"] else: initvalues["visibulletinlist"] = [] + initvalues["coefficient"] = initvalues.get("coefficient", 1.0) vals = scu.get_request_args() if vals.get("tf_submitted", False) and "visibulletinlist" not in vals: vals["visibulletinlist"] = [] @@ -158,7 +159,7 @@ def evaluation_create_form( else: coef_ue = ue_coef_dict.get(ue.id, 0.0) or 0.0 if coef_ue > 0: - poids = 1.0 # par defaut au départ + poids = 1.0 # par défaut au départ else: poids = 0.0 initvalues[f"poids_{ue.id}"] = poids @@ -284,6 +285,7 @@ def evaluation_create_form( ] # Liste des UE utilisées dans des modules de ce semestre: for ue in sem_ues: + coef_ue = ue_coef_dict.get(ue.id, 0.0) form.append( ( f"poids_{ue.id}", @@ -292,10 +294,14 @@ def evaluation_create_form( "size": 2, "type": "float", "explanation": f""" - {ue_coef_dict.get(ue.id, 0.)} + ({"coef. mod.:" +str(coef_ue) if coef_ue else "ce module n'a pas de coef. dans cette UE"}) {ue.titre} """, "allow_null": False, + # ok si poids nul ou coef vers l'UE nul: + "validator": lambda val, field: (not val) + or ue_coef_dict.get(int(field[len("poids_") :]), 0.0) != 0, + "enabled": coef_ue != 0 or initvalues[f"poids_{ue.id}"] != 0.0, }, ), ) @@ -331,7 +337,7 @@ def evaluation_create_form( if edit: sco_evaluation_db.do_evaluation_edit(tf[2]) else: - # creation d'une evaluation + # création d'une evaluation evaluation_id = sco_evaluation_db.do_evaluation_create(**tf[2]) if is_apc: # Set poids