forked from ScoDoc/ScoDoc
Restreint les analyses aux semestres d'une formation APC (cf. bug lyonnais)
This commit is contained in:
parent
02bccb58aa
commit
769f6c0ea0
@ -190,7 +190,7 @@ class EtudiantsJuryPE:
|
||||
"""
|
||||
identite = Identite.get_etud(etudid)
|
||||
|
||||
"""Le cursus global de l'étudiant (restreint aux semestres APC)"""
|
||||
# Le cursus global de l'étudiant (restreint aux semestres APC)
|
||||
formsemestres = identite.get_formsemestres()
|
||||
|
||||
semestres_etudiant = {
|
||||
@ -212,7 +212,7 @@ class EtudiantsJuryPE:
|
||||
"abandon": False, # va être traité en dessous
|
||||
}
|
||||
|
||||
""" Est-il réorienté / démissionnaire ou a-t-il arrêté volontairement sa formation ?"""
|
||||
# Est-il réorienté / démissionnaire ou a-t-il arrêté volontairement sa formation ?
|
||||
self.cursus[etudid]["abandon"] = arret_de_formation(identite, cosemestres)
|
||||
|
||||
def get_semestres_significatifs(self, etudid: int):
|
||||
@ -409,8 +409,9 @@ def get_etudiants_dans_semestres(semestres: dict[int, FormSemestre]) -> set:
|
||||
|
||||
|
||||
def annee_diplome(identite: Identite) -> int:
|
||||
"""L'année de diplôme prévue d'un étudiant en fonction de ses semestres
|
||||
d'inscription (pour un BUT).
|
||||
"""L'année de diplôme prévue d'un étudiant en fonction de ses semestres d'inscription (pour un BUT).
|
||||
|
||||
Les semestres utilisés pour le calcul sont limités à ceux d'une formation apc.
|
||||
|
||||
Args:
|
||||
identite: L'identité d'un étudiant
|
||||
@ -418,23 +419,39 @@ def annee_diplome(identite: Identite) -> int:
|
||||
Returns:
|
||||
L'année prévue de sa diplômation
|
||||
"""
|
||||
formsemestres = identite.get_formsemestres()
|
||||
formsemestres_apc = get_semestres_apc(identite)
|
||||
|
||||
if formsemestres:
|
||||
dates_possibles_diplome = []
|
||||
for sem_base in formsemestres:
|
||||
if formsemestres_apc:
|
||||
dates_possibles_diplome: int = []
|
||||
"""Années de diplômation prédites en fonction des semestres (d'une formation APC) d'un étudiant"""
|
||||
for sem_base in formsemestres_apc:
|
||||
annee = pe_comp.get_annee_diplome_semestre(sem_base)
|
||||
if annee:
|
||||
dates_possibles_diplome(annee)
|
||||
dates_possibles_diplome.append(annee)
|
||||
if dates_possibles_diplome:
|
||||
return max(dates_possibles_diplome)
|
||||
else:
|
||||
None
|
||||
else:
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def arret_de_formation(identite: Identite, cosemestres: list[FormSemestre]) -> bool:
|
||||
def get_semestres_apc(identite: Identite) -> list:
|
||||
"""Liste des semestres d'un étudiant qui corresponde à une formation APC.
|
||||
|
||||
Args:
|
||||
identite: L'identité d'un étudiant
|
||||
|
||||
Returns:
|
||||
Liste de ``FormSemestre`` correspondant à une formation APC
|
||||
"""
|
||||
semestres = identite.get_formsemestres()
|
||||
semestres_apc = []
|
||||
for sem in semestres:
|
||||
if sem.formation.is_apc():
|
||||
semestres_apc.append(sem)
|
||||
return semestres_apc
|
||||
|
||||
|
||||
def arret_de_formation(identite: Identite, cosemestres: dict[int, FormSemestre]) -> bool:
|
||||
"""Détermine si un étudiant a arrêté sa formation. Il peut s'agir :
|
||||
|
||||
* d'une réorientation à l'initiative du jury de semestre ou d'une démission (on pourrait
|
||||
@ -472,20 +489,24 @@ def arret_de_formation(identite: Identite, cosemestres: list[FormSemestre]) -> b
|
||||
TODO:: A reprendre pour le cas des étudiants à l'étranger
|
||||
TODO:: A reprendre si BUT avec semestres décalés
|
||||
"""
|
||||
etudid = identite.etudid
|
||||
|
||||
"""Son dernier semestre en date"""
|
||||
semestres = {sem.semestre_id: sem for sem in identite.get_formsemestres()}
|
||||
dernier_formsemestre = get_dernier_semestre_en_date(semestres)
|
||||
# Les semestres APC de l'étudiant
|
||||
semestres = get_semestres_apc(identite)
|
||||
semestres_apc = {sem.semestre_id: sem for sem in semestres}
|
||||
if not semestres_apc:
|
||||
return True
|
||||
|
||||
# Son dernier semestre APC en date
|
||||
dernier_formsemestre = get_dernier_semestre_en_date(semestres_apc)
|
||||
numero_dernier_formsemestre = dernier_formsemestre.semestre_id
|
||||
|
||||
"""Les numéro de semestres possible dans lesquels il pourrait s'incrire"""
|
||||
# semestre impair => passage de droit en semestre pair suivant (effet de l'annualisation)
|
||||
# Les numéro de semestres possible dans lesquels il pourrait s'incrire
|
||||
## semestre impair => passage de droit en semestre pair suivant (effet de l'annualisation)
|
||||
if numero_dernier_formsemestre % 2 == 1:
|
||||
numeros_possibles = list(
|
||||
range(numero_dernier_formsemestre + 1, pe_comp.NBRE_SEMESTRES_DIPLOMANT)
|
||||
)
|
||||
# semestre pair => passage en année supérieure ou redoublement
|
||||
## semestre pair => passage en année supérieure ou redoublement
|
||||
else: #
|
||||
numeros_possibles = list(
|
||||
range(
|
||||
@ -494,7 +515,7 @@ def arret_de_formation(identite: Identite, cosemestres: list[FormSemestre]) -> b
|
||||
)
|
||||
)
|
||||
|
||||
"""Y-a-t-il des cosemestres dans lesquels il aurait pu s'incrire ?"""
|
||||
# Y-a-t-il des cosemestres dans lesquels il aurait pu s'incrire ?
|
||||
formsestres_superieurs_possibles = []
|
||||
for fid, sem in cosemestres.items(): # Les semestres ayant des inscrits
|
||||
if (
|
||||
|
Loading…
Reference in New Issue
Block a user