Fix: PE: max de seq. vides

This commit is contained in:
Emmanuel Viennet 2022-04-20 12:23:43 +02:00
parent dd9351ca6e
commit 4fea9701cb

View File

@ -486,7 +486,10 @@ class JuryPE(object):
sesdates = [ sesdates = [
pe_tagtable.conversionDate_StrToDate(sem["date_fin"]) for sem in sessems pe_tagtable.conversionDate_StrToDate(sem["date_fin"]) for sem in sessems
] # association 1 date -> 1 semestrePE pour les semestres de l'étudiant ] # 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) # 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): for (i, fid) in enumerate(lesFids):
if pe_tools.PE_DEBUG: if pe_tools.PE_DEBUG:
pe_tools.pe_print( pe_tools.pe_print(
u"%d) Semestre taggué %s (avec classement dans groupe)" "%d) Semestre taggué %s (avec classement dans groupe)"
% (i + 1, fid) % (i + 1, fid)
) )
self.add_semtags_in_jury(fid) self.add_semtags_in_jury(fid)
@ -620,7 +623,7 @@ class JuryPE(object):
nbinscrit = self.semTagDict[fid].get_nbinscrits() nbinscrit = self.semTagDict[fid].get_nbinscrits()
if pe_tools.PE_DEBUG: if pe_tools.PE_DEBUG:
pe_tools.pe_print( pe_tools.pe_print(
u" - %d étudiants classés " % (nbinscrit) " - %d étudiants classés " % (nbinscrit)
+ ": " + ": "
+ ",".join( + ",".join(
[etudid for etudid in self.semTagDict[fid].get_etudids()] [etudid for etudid in self.semTagDict[fid].get_etudids()]
@ -628,12 +631,12 @@ class JuryPE(object):
) )
if lesEtudidsManquants: if lesEtudidsManquants:
pe_tools.pe_print( 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)) % (len(lesEtudidsManquants))
+ ": " + ": "
+ ", ".join(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" filename = self.NOM_EXPORT_ZIP + self.semTagDict[fid].nom + ".csv"
self.zipfile.writestr(filename, self.semTagDict[fid].str_tagtable()) self.zipfile.writestr(filename, self.semTagDict[fid].str_tagtable())
@ -742,7 +745,7 @@ class JuryPE(object):
for fid in fids_finaux: for fid in fids_finaux:
if pe_tools.PE_DEBUG and pe_tools.PE_DEBUG >= 1: 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( settag = pe_settag.SetTag(
nom, parcours=parcours nom, parcours=parcours
) # Le set tag fusionnant les données ) # Le set tag fusionnant les données
@ -762,7 +765,7 @@ class JuryPE(object):
for ffid in settag.get_Fids_in_settag(): for ffid in settag.get_Fids_in_settag():
if pe_tools.PE_DEBUG and pe_tools.PE_DEBUG >= 1: if pe_tools.PE_DEBUG and pe_tools.PE_DEBUG >= 1:
pe_tools.pe_print( pe_tools.pe_print(
u" -> ajout du semestre tagué %s" % (ffid) " -> ajout du semestre tagué %s" % (ffid)
) )
self.add_semtags_in_jury(ffid) self.add_semtags_in_jury(ffid)
settag.set_SemTagDict( settag.set_SemTagDict(
@ -791,7 +794,7 @@ class JuryPE(object):
if nbreEtudInscrits > 0: if nbreEtudInscrits > 0:
if pe_tools.PE_DEBUG: if pe_tools.PE_DEBUG:
pe_tools.pe_print( 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"]: if nom in ["S1", "S2", "S3", "S4"]:
settag.set_SetTagDict(self.semTagDict) settag.set_SetTagDict(self.semTagDict)
@ -802,7 +805,7 @@ class JuryPE(object):
else: else:
if pe_tools.PE_DEBUG: if pe_tools.PE_DEBUG:
pe_tools.pe_print( 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) % (i + 1, nom)
) )
@ -1152,11 +1155,14 @@ class JuryPE(object):
return sesSems 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 """Calcule et renvoie la date de diplome prévue pour un étudiant fourni avec son etudid
en fonction de sesSemestres de scolarisation""" en fonction de ses semestres de scolarisation"""
sesSemestres = self.get_semestresDUT_d_un_etudiant(etudid) semestres = self.get_semestresDUT_d_un_etudiant(etudid)
return max([get_annee_diplome_semestre(sem) for sem in sesSemestres]) if semestres:
return max([get_annee_diplome_semestre(sem) for sem in semestres])
else:
return None
# ********************************************* # *********************************************
# Fonctions d'affichage pour debug # Fonctions d'affichage pour debug
@ -1184,18 +1190,21 @@ class JuryPE(object):
chaine += "\n" chaine += "\n"
return chaine return chaine
def get_date_entree_etudiant(self, etudid): def get_date_entree_etudiant(self, etudid) -> str:
"""Renvoie la date d'entree d'un étudiant""" """Renvoie la date d'entree d'un étudiant: "1996" """
return str( annees_debut = [
min([int(sem["annee_debut"]) for sem in self.ETUDINFO_DICT[etudid]["sems"]]) int(sem["annee_debut"]) for sem in self.ETUDINFO_DICT[etudid]["sems"]
) ]
if annees_debut:
return str(min(annees_debut))
return ""
# ---------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------
# Fonctions # 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 : """Pour un semestre donne, décrit par le biais du dictionnaire sem usuel :
sem = {'formestre_id': ..., 'semestre_id': ..., 'annee_debut': ...}, sem = {'formestre_id': ..., 'semestre_id': ..., 'annee_debut': ...},
à condition qu'il soit un semestre de formation DUT, à condition qu'il soit un semestre de formation DUT,