From 4fea9701cb19beaf3c544ed1b338f9d1ec3b100d Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Wed, 20 Apr 2022 12:23:43 +0200 Subject: [PATCH] Fix: PE: max de seq. vides --- app/pe/pe_jurype.py | 47 +++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/app/pe/pe_jurype.py b/app/pe/pe_jurype.py index 0943649cff..48795edfc3 100644 --- a/app/pe/pe_jurype.py +++ b/app/pe/pe_jurype.py @@ -486,7 +486,10 @@ class JuryPE(object): sesdates = [ pe_tagtable.conversionDate_StrToDate(sem["date_fin"]) for sem in sessems ] # association 1 date -> 1 semestrePE pour les semestres de l'étudiant - lastdate = max(sesdates) # date de fin de l'inscription la plus récente + if sesdates: + lastdate = max(sesdates) # date de fin de l'inscription la plus récente + else: + return False # if PETable.AFFICHAGE_DEBUG_PE == True : pe_tools.pe_print(" derniere inscription = ", lastDateSem) @@ -585,7 +588,7 @@ class JuryPE(object): for (i, fid) in enumerate(lesFids): if pe_tools.PE_DEBUG: pe_tools.pe_print( - u"%d) Semestre taggué %s (avec classement dans groupe)" + "%d) Semestre taggué %s (avec classement dans groupe)" % (i + 1, fid) ) self.add_semtags_in_jury(fid) @@ -620,7 +623,7 @@ class JuryPE(object): nbinscrit = self.semTagDict[fid].get_nbinscrits() if pe_tools.PE_DEBUG: pe_tools.pe_print( - u" - %d étudiants classés " % (nbinscrit) + " - %d étudiants classés " % (nbinscrit) + ": " + ",".join( [etudid for etudid in self.semTagDict[fid].get_etudids()] @@ -628,12 +631,12 @@ class JuryPE(object): ) if lesEtudidsManquants: pe_tools.pe_print( - u" - dont %d étudiants manquants ajoutés aux données du jury" + " - dont %d étudiants manquants ajoutés aux données du jury" % (len(lesEtudidsManquants)) + ": " + ", ".join(lesEtudidsManquants) ) - pe_tools.pe_print(u" - Export csv") + pe_tools.pe_print(" - Export csv") filename = self.NOM_EXPORT_ZIP + self.semTagDict[fid].nom + ".csv" self.zipfile.writestr(filename, self.semTagDict[fid].str_tagtable()) @@ -742,7 +745,7 @@ class JuryPE(object): for fid in fids_finaux: if pe_tools.PE_DEBUG and pe_tools.PE_DEBUG >= 1: - pe_tools.pe_print(u" - semestre final %s" % (fid)) + pe_tools.pe_print(" - semestre final %s" % (fid)) settag = pe_settag.SetTag( nom, parcours=parcours ) # Le set tag fusionnant les données @@ -762,7 +765,7 @@ class JuryPE(object): for ffid in settag.get_Fids_in_settag(): if pe_tools.PE_DEBUG and pe_tools.PE_DEBUG >= 1: pe_tools.pe_print( - u" -> ajout du semestre tagué %s" % (ffid) + " -> ajout du semestre tagué %s" % (ffid) ) self.add_semtags_in_jury(ffid) settag.set_SemTagDict( @@ -791,7 +794,7 @@ class JuryPE(object): if nbreEtudInscrits > 0: if pe_tools.PE_DEBUG: pe_tools.pe_print( - u"%d) %s avec interclassement sur la promo" % (i + 1, nom) + "%d) %s avec interclassement sur la promo" % (i + 1, nom) ) if nom in ["S1", "S2", "S3", "S4"]: settag.set_SetTagDict(self.semTagDict) @@ -802,7 +805,7 @@ class JuryPE(object): else: if pe_tools.PE_DEBUG: pe_tools.pe_print( - u"%d) Pas d'interclassement %s sur la promo faute de notes" + "%d) Pas d'interclassement %s sur la promo faute de notes" % (i + 1, nom) ) @@ -1152,11 +1155,14 @@ class JuryPE(object): return sesSems # ********************************************** - def calcul_anneePromoDUT_d_un_etudiant(self, etudid): + def calcul_anneePromoDUT_d_un_etudiant(self, etudid) -> int: """Calcule et renvoie la date de diplome prévue pour un étudiant fourni avec son etudid - en fonction de sesSemestres de scolarisation""" - sesSemestres = self.get_semestresDUT_d_un_etudiant(etudid) - return max([get_annee_diplome_semestre(sem) for sem in sesSemestres]) + en fonction de ses semestres de scolarisation""" + semestres = self.get_semestresDUT_d_un_etudiant(etudid) + if semestres: + return max([get_annee_diplome_semestre(sem) for sem in semestres]) + else: + return None # ********************************************* # Fonctions d'affichage pour debug @@ -1184,18 +1190,21 @@ class JuryPE(object): chaine += "\n" return chaine - def get_date_entree_etudiant(self, etudid): - """Renvoie la date d'entree d'un étudiant""" - return str( - min([int(sem["annee_debut"]) for sem in self.ETUDINFO_DICT[etudid]["sems"]]) - ) + def get_date_entree_etudiant(self, etudid) -> str: + """Renvoie la date d'entree d'un étudiant: "1996" """ + annees_debut = [ + int(sem["annee_debut"]) for sem in self.ETUDINFO_DICT[etudid]["sems"] + ] + if annees_debut: + return str(min(annees_debut)) + return "" # ---------------------------------------------------------------------------------------- # Fonctions # ---------------------------------------------------------------------------------------- -def get_annee_diplome_semestre(sem): +def get_annee_diplome_semestre(sem) -> int: """Pour un semestre donne, décrit par le biais du dictionnaire sem usuel : sem = {'formestre_id': ..., 'semestre_id': ..., 'annee_debut': ...}, à condition qu'il soit un semestre de formation DUT,