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)
|
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()
|
formsemestres = identite.get_formsemestres()
|
||||||
|
|
||||||
semestres_etudiant = {
|
semestres_etudiant = {
|
||||||
@ -212,7 +212,7 @@ class EtudiantsJuryPE:
|
|||||||
"abandon": False, # va être traité en dessous
|
"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)
|
self.cursus[etudid]["abandon"] = arret_de_formation(identite, cosemestres)
|
||||||
|
|
||||||
def get_semestres_significatifs(self, etudid: int):
|
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:
|
def annee_diplome(identite: Identite) -> int:
|
||||||
"""L'année de diplôme prévue d'un étudiant en fonction de ses semestres
|
"""L'année de diplôme prévue d'un étudiant en fonction de ses semestres d'inscription (pour un BUT).
|
||||||
d'inscription (pour un BUT).
|
|
||||||
|
Les semestres utilisés pour le calcul sont limités à ceux d'une formation apc.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
identite: L'identité d'un étudiant
|
identite: L'identité d'un étudiant
|
||||||
@ -418,23 +419,39 @@ def annee_diplome(identite: Identite) -> int:
|
|||||||
Returns:
|
Returns:
|
||||||
L'année prévue de sa diplômation
|
L'année prévue de sa diplômation
|
||||||
"""
|
"""
|
||||||
formsemestres = identite.get_formsemestres()
|
formsemestres_apc = get_semestres_apc(identite)
|
||||||
|
|
||||||
if formsemestres:
|
if formsemestres_apc:
|
||||||
dates_possibles_diplome = []
|
dates_possibles_diplome: int = []
|
||||||
for sem_base in formsemestres:
|
"""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)
|
annee = pe_comp.get_annee_diplome_semestre(sem_base)
|
||||||
if annee:
|
if annee:
|
||||||
dates_possibles_diplome(annee)
|
dates_possibles_diplome.append(annee)
|
||||||
if dates_possibles_diplome:
|
if dates_possibles_diplome:
|
||||||
return max(dates_possibles_diplome)
|
return max(dates_possibles_diplome)
|
||||||
else:
|
|
||||||
None
|
|
||||||
else:
|
|
||||||
return None
|
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é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
|
* 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 pour le cas des étudiants à l'étranger
|
||||||
TODO:: A reprendre si BUT avec semestres décalés
|
TODO:: A reprendre si BUT avec semestres décalés
|
||||||
"""
|
"""
|
||||||
etudid = identite.etudid
|
|
||||||
|
|
||||||
"""Son dernier semestre en date"""
|
# Les semestres APC de l'étudiant
|
||||||
semestres = {sem.semestre_id: sem for sem in identite.get_formsemestres()}
|
semestres = get_semestres_apc(identite)
|
||||||
dernier_formsemestre = get_dernier_semestre_en_date(semestres)
|
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
|
numero_dernier_formsemestre = dernier_formsemestre.semestre_id
|
||||||
|
|
||||||
"""Les numéro de semestres possible dans lesquels il pourrait s'incrire"""
|
# 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)
|
## semestre impair => passage de droit en semestre pair suivant (effet de l'annualisation)
|
||||||
if numero_dernier_formsemestre % 2 == 1:
|
if numero_dernier_formsemestre % 2 == 1:
|
||||||
numeros_possibles = list(
|
numeros_possibles = list(
|
||||||
range(numero_dernier_formsemestre + 1, pe_comp.NBRE_SEMESTRES_DIPLOMANT)
|
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: #
|
else: #
|
||||||
numeros_possibles = list(
|
numeros_possibles = list(
|
||||||
range(
|
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 = []
|
formsestres_superieurs_possibles = []
|
||||||
for fid, sem in cosemestres.items(): # Les semestres ayant des inscrits
|
for fid, sem in cosemestres.items(): # Les semestres ayant des inscrits
|
||||||
if (
|
if (
|
||||||
|
Loading…
Reference in New Issue
Block a user