forked from ScoDoc/ScoDoc
Fix: enregistrement autorisations d'inscriptions auto sur sem. BUT impairs
This commit is contained in:
parent
9e52566781
commit
f74713ac09
@ -649,12 +649,14 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
"""Les indices des semestres dans lequels l'étudiant est autorisé
|
"""Les indices des semestres dans lequels l'étudiant est autorisé
|
||||||
à poursuivre après le semestre courant.
|
à poursuivre après le semestre courant.
|
||||||
"""
|
"""
|
||||||
ids = set()
|
|
||||||
# La poursuite d'études dans un semestre pair d’une même année
|
# La poursuite d'études dans un semestre pair d’une même année
|
||||||
# est de droit pour tout étudiant:
|
# est de droit pour tout étudiant.
|
||||||
if (self.formsemestre.semestre_id % 2) and sco_codes.CursusBUT.NB_SEM:
|
# Pas de redoublements directs de S_impair vers S_impair
|
||||||
ids.add(self.formsemestre.semestre_id + 1)
|
# (pourront être traités manuellement)
|
||||||
|
if (
|
||||||
|
self.formsemestre.semestre_id % 2
|
||||||
|
) and self.formsemestre.semestre_id < sco_codes.CursusBUT.NB_SEM:
|
||||||
|
return {self.formsemestre.semestre_id + 1}
|
||||||
# La poursuite d’études dans un semestre impair est possible si
|
# La poursuite d’études dans un semestre impair est possible si
|
||||||
# et seulement si l’étudiant a obtenu :
|
# et seulement si l’étudiant a obtenu :
|
||||||
# - la moyenne à plus de la moitié des regroupements cohérents d’UE ;
|
# - la moyenne à plus de la moitié des regroupements cohérents d’UE ;
|
||||||
@ -664,10 +666,11 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
# ScoDoc ne contraint donc pas à la respecter strictement.
|
# ScoDoc ne contraint donc pas à la respecter strictement.
|
||||||
# Si le code est dans BUT_CODES_PASSAGE (ADM, ADJ, PASD, PAS1NCI, ATJ),
|
# Si le code est dans BUT_CODES_PASSAGE (ADM, ADJ, PASD, PAS1NCI, ATJ),
|
||||||
# autorise à passer dans le semestre suivant
|
# autorise à passer dans le semestre suivant
|
||||||
|
ids = set()
|
||||||
if (
|
if (
|
||||||
self.jury_annuel
|
self.jury_annuel
|
||||||
and code in sco_codes.BUT_CODES_PASSAGE
|
and code in sco_codes.BUT_CODES_PASSAGE
|
||||||
and self.formsemestre_pair.semestre_id < sco_codes.CursusBUT.NB_SEM
|
and self.formsemestre.semestre_id < sco_codes.CursusBUT.NB_SEM
|
||||||
):
|
):
|
||||||
ids.add(self.formsemestre.semestre_id + 1)
|
ids.add(self.formsemestre.semestre_id + 1)
|
||||||
|
|
||||||
@ -723,6 +726,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
for dec_rcue, code in codes_rcues:
|
for dec_rcue, code in codes_rcues:
|
||||||
dec_rcue.record(code)
|
dec_rcue.record(code)
|
||||||
self.record(code_annee)
|
self.record(code_annee)
|
||||||
|
self.record_autorisation_inscription(code_annee)
|
||||||
self.record_all()
|
self.record_all()
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
@ -755,15 +759,21 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
code=code,
|
code=code,
|
||||||
)
|
)
|
||||||
db.session.add(self.validation)
|
db.session.add(self.validation)
|
||||||
db.session.commit()
|
|
||||||
log(f"Recording {self}: {code}")
|
log(f"Recording {self}: {code}")
|
||||||
Scolog.logdb(
|
Scolog.logdb(
|
||||||
method="jury_but",
|
method="jury_but",
|
||||||
etudid=self.etud.id,
|
etudid=self.etud.id,
|
||||||
msg=f"Validation année BUT{self.annee_but}: {code}",
|
msg=f"Validation année BUT{self.annee_but}: {code}",
|
||||||
)
|
)
|
||||||
|
self.recorded = True
|
||||||
|
self.invalidate_formsemestre_cache()
|
||||||
|
return True
|
||||||
|
|
||||||
# --- Autorisation d'inscription dans semestre suivant ?
|
def record_autorisation_inscription(self, code: str):
|
||||||
|
"""Autorisation d'inscription dans semestre suivant"""
|
||||||
|
if self.inscription_etat != scu.INSCRIT:
|
||||||
|
# les dem et DEF ne continuent jamais
|
||||||
|
return
|
||||||
ScolarAutorisationInscription.delete_autorisation_etud(
|
ScolarAutorisationInscription.delete_autorisation_etud(
|
||||||
etudid=self.etud.id,
|
etudid=self.etud.id,
|
||||||
origin_formsemestre_id=self.formsemestre.id,
|
origin_formsemestre_id=self.formsemestre.id,
|
||||||
@ -776,11 +786,6 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
next_semestre_id,
|
next_semestre_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
db.session.commit()
|
|
||||||
self.recorded = True
|
|
||||||
self.invalidate_formsemestre_cache()
|
|
||||||
return True
|
|
||||||
|
|
||||||
def invalidate_formsemestre_cache(self):
|
def invalidate_formsemestre_cache(self):
|
||||||
"invalide le résultats des deux formsemestres"
|
"invalide le résultats des deux formsemestres"
|
||||||
if self.formsemestre_impair is not None:
|
if self.formsemestre_impair is not None:
|
||||||
@ -859,7 +864,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
|
|||||||
not only_validantes
|
not only_validantes
|
||||||
) or code in sco_codes.CODES_ANNEE_BUT_VALIDES_DE_DROIT:
|
) or code in sco_codes.CODES_ANNEE_BUT_VALIDES_DE_DROIT:
|
||||||
modif |= self.record(code, no_overwrite=no_overwrite)
|
modif |= self.record(code, no_overwrite=no_overwrite)
|
||||||
|
self.record_autorisation_inscription(code)
|
||||||
return modif
|
return modif
|
||||||
|
|
||||||
def erase(self, only_one_sem=False):
|
def erase(self, only_one_sem=False):
|
||||||
|
@ -328,6 +328,9 @@ def jury_but_semestriel(
|
|||||||
if not formsemestre.semestre_id + 1 in (
|
if not formsemestre.semestre_id + 1 in (
|
||||||
a.semestre_id for a in autorisations_passage
|
a.semestre_id for a in autorisations_passage
|
||||||
):
|
):
|
||||||
|
ScolarAutorisationInscription.delete_autorisation_etud(
|
||||||
|
etud.id, formsemestre.id
|
||||||
|
)
|
||||||
ScolarAutorisationInscription.autorise_etud(
|
ScolarAutorisationInscription.autorise_etud(
|
||||||
etud.id,
|
etud.id,
|
||||||
formsemestre.formation.formation_code,
|
formsemestre.formation.formation_code,
|
||||||
|
@ -112,8 +112,7 @@ class ScolarAutorisationInscription(db.Model):
|
|||||||
origin_formsemestre_id: int,
|
origin_formsemestre_id: int,
|
||||||
semestre_id: int,
|
semestre_id: int,
|
||||||
):
|
):
|
||||||
"""Enregistre une autorisation, remplace celle émanant du même semestre si elle existe."""
|
"""Ajoute une autorisation"""
|
||||||
cls.delete_autorisation_etud(etudid, origin_formsemestre_id)
|
|
||||||
autorisation = cls(
|
autorisation = cls(
|
||||||
etudid=etudid,
|
etudid=etudid,
|
||||||
formation_code=formation_code,
|
formation_code=formation_code,
|
||||||
|
@ -29,7 +29,7 @@ from app.models import (
|
|||||||
UniteEns,
|
UniteEns,
|
||||||
)
|
)
|
||||||
from app.scodoc import sco_utils as scu
|
from app.scodoc import sco_utils as scu
|
||||||
from app.scodoc import sco_pvjury
|
from app.scodoc import sco_dict_pv_jury
|
||||||
|
|
||||||
|
|
||||||
def setup_formation_referentiel(formation: Formation, refcomp_infos: dict):
|
def setup_formation_referentiel(formation: Formation, refcomp_infos: dict):
|
||||||
@ -241,6 +241,8 @@ def but_compare_decisions_annee(deca: DecisionsProposeesAnnee, deca_att: dict):
|
|||||||
if code_manuel is not None:
|
if code_manuel is not None:
|
||||||
assert code_manuel in deca.codes
|
assert code_manuel in deca.codes
|
||||||
deca.record(code_manuel)
|
deca.record(code_manuel)
|
||||||
|
deca.record_autorisation_inscription(code_manuel)
|
||||||
|
db.session.commit()
|
||||||
assert deca.recorded
|
assert deca.recorded
|
||||||
|
|
||||||
|
|
||||||
@ -306,7 +308,7 @@ def but_test_jury(formsemestre: FormSemestre, doc: dict):
|
|||||||
but_compare_decisions_annee(deca, deca_att)
|
but_compare_decisions_annee(deca, deca_att)
|
||||||
if "autorisations_inscription" in doc_formsemestre["attendu"]:
|
if "autorisations_inscription" in doc_formsemestre["attendu"]:
|
||||||
if dpv is None: # lazy load
|
if dpv is None: # lazy load
|
||||||
dpv = sco_pvjury.dict_pvjury(formsemestre.id)
|
dpv = sco_dict_pv_jury.dict_pvjury(formsemestre.id)
|
||||||
check_autorisations_inscription(
|
check_autorisations_inscription(
|
||||||
etud, dpv, doc_formsemestre["attendu"]["autorisations_inscription"]
|
etud, dpv, doc_formsemestre["attendu"]["autorisations_inscription"]
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user