diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py index 9ed1636a..d874a3ad 100644 --- a/app/models/formsemestre.py +++ b/app/models/formsemestre.py @@ -144,6 +144,8 @@ class FormSemestre(db.Model): d["annee_debut"] = str(self.date_debut.year) d["annee"] = d["annee_debut"] d["annee_fin"] = str(self.date_fin.year) + if d["annee_fin"] != d["annee_debut"]: + d["annee"] += "-" + str(d["annee_fin"]) d["mois_debut_ord"] = self.date_debut.month d["mois_fin_ord"] = self.date_fin.month # La période: considère comme "S1" (ou S3) les débuts en aout-sept-octobre @@ -152,15 +154,8 @@ class FormSemestre(db.Model): d["periode"] = 1 # typiquement, début en septembre: S1, S3... else: d["periode"] = 2 # typiquement, début en février: S2, S4... - d["titre_num"] = self.titre_num - d["titreannee"] = "%s %s %s" % ( - d["titre_num"], - self.modalite or "", - self.date_debut.year, - ) - if d["annee_fin"] != d["annee_debut"]: - d["titreannee"] += "-" + str(d["annee_fin"]) - d["annee"] += "-" + str(d["annee_fin"]) + d["titre_num"] = self.titre_num() + d["titreannee"] = self.titre_annee() d["mois_debut"] = f"{self.date_debut.month} {self.date_debut.year}" d["mois_fin"] = f"{self.date_fin.month} {self.date_fin.year}" d["titremois"] = "%s %s (%s - %s)" % ( @@ -332,6 +327,15 @@ class FormSemestre(db.Model): "-".join((imputation_dept, parcours_name, modalite, semestre_id, annee_sco)) ) + def titre_annee(self) -> str: + """ """ + titre_annee = ( + f"{self.titre_num()} {self.modalite or ''} {self.date_debut.year}" + ) + if self.date_fin.year != self.date_debut.year: + titre_annee += "-" + str(self.date_fin.year) + return titre_annee + def titre_mois(self) -> str: """Le titre et les dates du semestre, pour affichage dans des listes Ex: "BUT QLIO (PN 2022) semestre 1 FI (Sept 2022 - Jan 2023)" diff --git a/app/scodoc/sco_groups.py b/app/scodoc/sco_groups.py index d5d55ea7..6a1ee467 100644 --- a/app/scodoc/sco_groups.py +++ b/app/scodoc/sco_groups.py @@ -47,7 +47,7 @@ from flask import url_for, make_response from app import db from app.comp import res_sem from app.comp.res_common import NotesTableCompat -from app.models import FormSemestre +from app.models import FormSemestre, formsemestre from app.models import GROUPNAME_STR_LEN, SHORT_STR_LEN from app.models.groups import Partition import app.scodoc.sco_utils as scu @@ -1277,13 +1277,13 @@ def groups_auto_repartition(partition_id=None): partition = get_partition(partition_id) formsemestre_id = partition["formsemestre_id"] + formsemestre = FormSemestre.query.get(formsemestre_id) # renvoie sur page édition groupes dest_url = url_for( "scolar.affect_groups", scodoc_dept=g.scodoc_dept, partition_id=partition_id ) if not sco_permissions_check.can_change_groups(formsemestre_id): raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !") - sem = sco_formsemestre.get_formsemestre(formsemestre_id) descr = [ ("partition_id", {"input_type": "hidden"}), @@ -1301,7 +1301,7 @@ def groups_auto_repartition(partition_id=None): H = [ html_sco_header.sco_header(page_title="Répartition des groupes"), "

Répartition des groupes de %s

" % partition["partition_name"], - "

Semestre %s

" % sem["titreannee"], + f"

Semestre {formsemestre.titre_annee()}

", """

Les groupes existants seront effacés et remplacés par ceux créés ici. La répartition aléatoire tente d'uniformiser le niveau des groupes (en utilisant la dernière moyenne générale disponible pour @@ -1343,7 +1343,7 @@ def groups_auto_repartition(partition_id=None): # return '\n'.join(H) + tf[1] + html_sco_header.sco_footer() group_ids.append(create_group(partition_id, group_name)) # - nt = sco_cache.NotesTableCache.get(formsemestre_id) # > identdict + nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) identdict = nt.identdict # build: { civilite : liste etudids trie par niveau croissant } civilites = set([x["civilite"] for x in identdict.values()]) @@ -1384,9 +1384,8 @@ def _get_prev_moy(etudid, formsemestre_id): etud = info[0] Se = sco_parcours_dut.SituationEtudParcours(etud, formsemestre_id) if Se.prev: - nt = sco_cache.NotesTableCache.get( - Se.prev["formsemestre_id"] - ) # > get_etud_moy_gen + prev_sem = FormSemestre.query.get(Se.prev["formsemestre_id"]) + nt: NotesTableCompat = res_sem.load_formsemestre_results(prev_sem) return nt.get_etud_moy_gen(etudid) else: return 0.0