From 71a15fed2fb54e76b4db242a642d0e2e827f0fa6 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sat, 3 Sep 2022 10:07:34 +0200 Subject: [PATCH] Fix: creation groupe default --- app/models/groups.py | 5 ++- app/scodoc/sco_formsemestre_exterieurs.py | 55 ++++++++++++----------- app/scodoc/sco_groups.py | 6 ++- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/app/models/groups.py b/app/models/groups.py index 5d2026eb..92e8cc5c 100644 --- a/app/models/groups.py +++ b/app/models/groups.py @@ -138,14 +138,15 @@ class GroupDescr(db.Model): @classmethod def check_name( - cls, partition: "Partition", group_name: str, existing=False + cls, partition: "Partition", group_name: str, existing=False, default=False ) -> bool: """check if a group named 'group_name' can be created in the given partition. If existing is True, allow a group_name already existing in the partition. + If default, name must be empty and default group must not yet exists. """ if not isinstance(group_name, str): return False - if not len(group_name.strip()) > 0: + if not default and not len(group_name.strip()) > 0: return False if (not existing) and (group_name in [g.group_name for g in partition.groups]): return False diff --git a/app/scodoc/sco_formsemestre_exterieurs.py b/app/scodoc/sco_formsemestre_exterieurs.py index 62d49c6d..30139851 100644 --- a/app/scodoc/sco_formsemestre_exterieurs.py +++ b/app/scodoc/sco_formsemestre_exterieurs.py @@ -83,32 +83,33 @@ def formsemestre_ext_create(etudid, sem_params): def formsemestre_ext_create_form(etudid, formsemestre_id): - """Formulaire creation/inscription à un semestre extérieur""" + """Formulaire création/inscription à un semestre extérieur""" etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0] H = [ html_sco_header.sco_header(), - """

Enregistrement d'une inscription antérieure dans un autre établissement

+ f"""

Enregistrement d'une inscription antérieure dans un autre + établissement

- Cette opération créé un semestre extérieur ("ancien") et y inscrit juste cet étudiant. - La décision de jury peut ensuite y être saisie. + Cette opération crée un semestre extérieur ("ancien") et y inscrit + juste cet étudiant. + La décision de jury peut ensuite y être saisie.

- Notez que si un semestre extérieur similaire a déjà été créé pour un autre étudiant, - il est préférable d'utiliser la fonction - " + Notez que si un semestre extérieur similaire a déjà été créé pour un autre + étudiant, il est préférable d'utiliser la fonction + " inscrire à un autre semestre"

- """ - % (etudid,), - """

Etudiant %s

""" - % ( - url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid), - etud["nomprenom"], - ), +

Étudiant {etud["nomprenom"]}

+ """, ] F = html_sco_header.sco_footer() orig_sem = sco_formsemestre.get_formsemestre(formsemestre_id) - # Ne propose que des semestres de semestre_id strictement inférieur au semestre courant + # Ne propose que des semestres de semestre_id strictement inférieur + # au semestre courant # et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc. # Les autres situations (eg redoublements en changeant d'établissement) # doivent être gérées par les validations de semestres "antérieurs" @@ -116,15 +117,15 @@ def formsemestre_ext_create_form(etudid, formsemestre_id): args={"etudid": etudid, "etat": "I"} ) semlist = [sco_formsemestre.get_formsemestre(i["formsemestre_id"]) for i in insem] - existing_semestre_ids = set([s["semestre_id"] for s in semlist]) + existing_semestre_ids = {s["semestre_id"] for s in semlist} min_semestre_id = 1 max_semestre_id = orig_sem["semestre_id"] semestre_ids = set(range(min_semestre_id, max_semestre_id)) - existing_semestre_ids H.append( - """

L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs: - %s -

""" - % sorted(list(existing_semestre_ids)) + f"""

L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs: + { sorted(list(existing_semestre_ids)) } +

+ """ ) if not semestre_ids: H.append("""

pas de semestres extérieurs possibles

""") @@ -176,7 +177,7 @@ def formsemestre_ext_create_form(etudid, formsemestre_id): ( "elt_help_ue", { - "title": """Les notes et coefficients des UE + "title": """Les notes et coefficients des UE capitalisées seront saisis ensuite""", "input_type": "separator", }, @@ -195,15 +196,19 @@ def formsemestre_ext_create_form(etudid, formsemestre_id): ) if tf[0] == 0: H.append( - """

Ce formulaire sert à enregistrer un semestre antérieur dans la formation - effectué dans un autre établissement. + """

Ce formulaire sert à enregistrer un semestre antérieur dans + la formation effectué dans un autre établissement.

""" ) return "\n".join(H) + "\n" + tf[1] + F elif tf[0] == -1: return flask.redirect( - "%s/formsemestre_bulletinetud?formsemestre_id==%s&etudid=%s" - % (scu.ScoURL(), formsemestre_id, etudid) + url_for( + "notes.formsemestre_bulletinetud", + scodoc_dept=g.scodoc_dept, + formsemestre_id=formsemestre_id, + etudid=etudid, + ) ) else: tf[2]["formation_id"] = orig_sem["formation_id"] diff --git a/app/scodoc/sco_groups.py b/app/scodoc/sco_groups.py index ca6246f4..c9416d2c 100644 --- a/app/scodoc/sco_groups.py +++ b/app/scodoc/sco_groups.py @@ -831,7 +831,9 @@ def setGroups( def create_group(partition_id, group_name="", default=False) -> GroupDescr: - """Create a new group in this partition""" + """Create a new group in this partition. + If default, create default partition (with no name) + """ partition = Partition.query.get_or_404(partition_id) if not sco_permissions_check.can_change_groups(partition.formsemestre_id): raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !") @@ -841,7 +843,7 @@ def create_group(partition_id, group_name="", default=False) -> GroupDescr: if not group_name and not default: raise ValueError("invalid group name: ()") - if not GroupDescr.check_name(partition, group_name): + if not GroupDescr.check_name(partition, group_name, default=default): raise ScoValueError(f"Le groupe {group_name} existe déjà dans cette partition") numeros = [g.numero if g.numero is not None else 0 for g in partition.groups]