Fix: creation groupe default
This commit is contained in:
parent
d3fd164768
commit
71a15fed2f
@ -138,14 +138,15 @@ class GroupDescr(db.Model):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_name(
|
def check_name(
|
||||||
cls, partition: "Partition", group_name: str, existing=False
|
cls, partition: "Partition", group_name: str, existing=False, default=False
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""check if a group named 'group_name' can be created in the given partition.
|
"""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 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):
|
if not isinstance(group_name, str):
|
||||||
return False
|
return False
|
||||||
if not len(group_name.strip()) > 0:
|
if not default and not len(group_name.strip()) > 0:
|
||||||
return False
|
return False
|
||||||
if (not existing) and (group_name in [g.group_name for g in partition.groups]):
|
if (not existing) and (group_name in [g.group_name for g in partition.groups]):
|
||||||
return False
|
return False
|
||||||
|
@ -83,32 +83,33 @@ def formsemestre_ext_create(etudid, sem_params):
|
|||||||
|
|
||||||
|
|
||||||
def formsemestre_ext_create_form(etudid, formsemestre_id):
|
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]
|
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(),
|
html_sco_header.sco_header(),
|
||||||
"""<h2>Enregistrement d'une inscription antérieure dans un autre établissement</h2>
|
f"""<h2>Enregistrement d'une inscription antérieure dans un autre
|
||||||
|
établissement</h2>
|
||||||
<p class="help">
|
<p class="help">
|
||||||
Cette opération créé un semestre extérieur ("ancien") et y inscrit juste cet étudiant.
|
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.
|
La décision de jury peut ensuite y être saisie.
|
||||||
</p>
|
</p>
|
||||||
<p class="help">
|
<p class="help">
|
||||||
Notez que si un semestre extérieur similaire a déjà été créé pour un autre étudiant,
|
Notez que si un semestre extérieur similaire a déjà été créé pour un autre
|
||||||
il est préférable d'utiliser la fonction
|
étudiant, il est préférable d'utiliser la fonction
|
||||||
"<a href="formsemestre_inscription_with_modules_form?etudid=%s&only_ext=1">
|
"<a href="{ url_for('notes.formsemestre_inscription_with_modules_form',
|
||||||
|
scodoc_dept=g.scodoc_dept, etudid=etudid, only_ext=1) }">
|
||||||
inscrire à un autre semestre</a>"
|
inscrire à un autre semestre</a>"
|
||||||
</p>
|
</p>
|
||||||
"""
|
<h3><a href="{ url_for('scolar.ficheEtud',
|
||||||
% (etudid,),
|
scodoc_dept=g.scodoc_dept, etudid=etudid)
|
||||||
"""<h3><a href="%s" class="stdlink">Etudiant %s</a></h3>"""
|
}" class="stdlink">Étudiant {etud["nomprenom"]}</a></h3>
|
||||||
% (
|
""",
|
||||||
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid),
|
|
||||||
etud["nomprenom"],
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
orig_sem = sco_formsemestre.get_formsemestre(formsemestre_id)
|
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.
|
# et seulement si pas inscrit au même semestre_id d'un semestre ordinaire ScoDoc.
|
||||||
# Les autres situations (eg redoublements en changeant d'établissement)
|
# Les autres situations (eg redoublements en changeant d'établissement)
|
||||||
# doivent être gérées par les validations de semestres "antérieurs"
|
# 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"}
|
args={"etudid": etudid, "etat": "I"}
|
||||||
)
|
)
|
||||||
semlist = [sco_formsemestre.get_formsemestre(i["formsemestre_id"]) for i in insem]
|
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
|
min_semestre_id = 1
|
||||||
max_semestre_id = orig_sem["semestre_id"]
|
max_semestre_id = orig_sem["semestre_id"]
|
||||||
semestre_ids = set(range(min_semestre_id, max_semestre_id)) - existing_semestre_ids
|
semestre_ids = set(range(min_semestre_id, max_semestre_id)) - existing_semestre_ids
|
||||||
H.append(
|
H.append(
|
||||||
"""<p>L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs:
|
f"""<p>L'étudiant est déjà inscrit dans des semestres ScoDoc de rangs:
|
||||||
%s
|
{ sorted(list(existing_semestre_ids)) }
|
||||||
</p>"""
|
</p>
|
||||||
% sorted(list(existing_semestre_ids))
|
"""
|
||||||
)
|
)
|
||||||
if not semestre_ids:
|
if not semestre_ids:
|
||||||
H.append("""<p class="warning">pas de semestres extérieurs possibles</p>""")
|
H.append("""<p class="warning">pas de semestres extérieurs possibles</p>""")
|
||||||
@ -195,15 +196,19 @@ def formsemestre_ext_create_form(etudid, formsemestre_id):
|
|||||||
)
|
)
|
||||||
if tf[0] == 0:
|
if tf[0] == 0:
|
||||||
H.append(
|
H.append(
|
||||||
"""<p>Ce formulaire sert à enregistrer un semestre antérieur dans la formation
|
"""<p>Ce formulaire sert à enregistrer un semestre antérieur dans
|
||||||
effectué dans un autre établissement.
|
la formation effectué dans un autre établissement.
|
||||||
</p>"""
|
</p>"""
|
||||||
)
|
)
|
||||||
return "\n".join(H) + "\n" + tf[1] + F
|
return "\n".join(H) + "\n" + tf[1] + F
|
||||||
elif tf[0] == -1:
|
elif tf[0] == -1:
|
||||||
return flask.redirect(
|
return flask.redirect(
|
||||||
"%s/formsemestre_bulletinetud?formsemestre_id==%s&etudid=%s"
|
url_for(
|
||||||
% (scu.ScoURL(), formsemestre_id, etudid)
|
"notes.formsemestre_bulletinetud",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
etudid=etudid,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
tf[2]["formation_id"] = orig_sem["formation_id"]
|
tf[2]["formation_id"] = orig_sem["formation_id"]
|
||||||
|
@ -831,7 +831,9 @@ def setGroups(
|
|||||||
|
|
||||||
|
|
||||||
def create_group(partition_id, group_name="", default=False) -> GroupDescr:
|
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)
|
partition = Partition.query.get_or_404(partition_id)
|
||||||
if not sco_permissions_check.can_change_groups(partition.formsemestre_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 !")
|
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:
|
if not group_name and not default:
|
||||||
raise ValueError("invalid group name: ()")
|
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")
|
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]
|
numeros = [g.numero if g.numero is not None else 0 for g in partition.groups]
|
||||||
|
Loading…
Reference in New Issue
Block a user