forked from ScoDoc/ScoDoc
DUT après jury BUT: calcul automatique. Closes #577
This commit is contained in:
parent
e63cdba1f6
commit
b58ab93fee
@ -9,14 +9,14 @@
|
|||||||
from flask import g, url_for
|
from flask import g, url_for
|
||||||
|
|
||||||
from app import db
|
from app import db
|
||||||
from app.but import jury_but
|
from app.but import jury_but, jury_dut120
|
||||||
from app.models import Identite, FormSemestre, ScolarNews
|
from app.models import Identite, FormSemestre, ScolarNews, ValidationDUT120
|
||||||
from app.scodoc import sco_cache
|
from app.scodoc import sco_cache
|
||||||
from app.scodoc.sco_exceptions import ScoValueError
|
from app.scodoc.sco_exceptions import ScoValueError
|
||||||
|
|
||||||
|
|
||||||
def formsemestre_validation_auto_but(
|
def formsemestre_validation_auto_but(
|
||||||
formsemestre: FormSemestre, only_adm: bool = True, dry_run=False
|
formsemestre: FormSemestre, only_adm: bool = True, dry_run=False, with_dut120=True
|
||||||
) -> tuple[int, list[jury_but.DecisionsProposeesAnnee]]:
|
) -> tuple[int, list[jury_but.DecisionsProposeesAnnee]]:
|
||||||
"""Calcul automatique des décisions de jury sur une "année" BUT.
|
"""Calcul automatique des décisions de jury sur une "année" BUT.
|
||||||
|
|
||||||
@ -27,6 +27,8 @@ def formsemestre_validation_auto_but(
|
|||||||
En revanche, si only_adm est faux, on enregistre la première décision proposée par ScoDoc
|
En revanche, si only_adm est faux, on enregistre la première décision proposée par ScoDoc
|
||||||
(mode à n'utiliser que pour les tests unitaires vérifiant la saisie des jurys)
|
(mode à n'utiliser que pour les tests unitaires vérifiant la saisie des jurys)
|
||||||
|
|
||||||
|
Enregistre aussi le DUT120.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
- En mode normal, (nombre d'étudiants pour lesquels on a enregistré au moins un code, []])
|
- En mode normal, (nombre d'étudiants pour lesquels on a enregistré au moins un code, []])
|
||||||
- En mode dry_run, (0, list[DecisionsProposeesAnnee])
|
- En mode dry_run, (0, list[DecisionsProposeesAnnee])
|
||||||
@ -40,10 +42,14 @@ def formsemestre_validation_auto_but(
|
|||||||
etud = Identite.get_etud(etudid)
|
etud = Identite.get_etud(etudid)
|
||||||
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre)
|
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre)
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
nb_etud_modif += deca.record_all(only_validantes=only_adm)
|
modified = deca.record_all(only_validantes=only_adm)
|
||||||
|
modified |= validation_dut120_auto(etud, formsemestre)
|
||||||
else:
|
else:
|
||||||
decas.append(deca)
|
decas.append(deca)
|
||||||
|
|
||||||
|
if modified:
|
||||||
|
nb_etud_modif += 1
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
ScolarNews.add(
|
ScolarNews.add(
|
||||||
typ=ScolarNews.NEWS_JURY,
|
typ=ScolarNews.NEWS_JURY,
|
||||||
@ -56,3 +62,28 @@ def formsemestre_validation_auto_but(
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
return nb_etud_modif, decas
|
return nb_etud_modif, decas
|
||||||
|
|
||||||
|
|
||||||
|
def validation_dut120_auto(etud: Identite, formsemestre: FormSemestre) -> bool:
|
||||||
|
"""Si l'étudiant n'a pas déjà validé son DUT120 dans cette spécialité
|
||||||
|
et qu'il satisfait les confitions, l'enregistre.
|
||||||
|
Returns True si nouvelle décision enregistrée.
|
||||||
|
"""
|
||||||
|
refcomp = formsemestre.formation.referentiel_competence
|
||||||
|
if not refcomp:
|
||||||
|
raise ScoValueError("formation non associée à un référentiel de compétences")
|
||||||
|
validation = ValidationDUT120.query.filter_by(
|
||||||
|
etudid=etud.id, referentiel_competence_id=refcomp.id
|
||||||
|
).first()
|
||||||
|
if validation:
|
||||||
|
return False # déjà enregistré
|
||||||
|
if jury_dut120.etud_valide_dut120(etud, refcomp.id):
|
||||||
|
new_validation = ValidationDUT120(
|
||||||
|
etudid=etud.id,
|
||||||
|
referentiel_competence_id=refcomp.id,
|
||||||
|
formsemestre_id=formsemestre.id, # Replace with appropriate value
|
||||||
|
)
|
||||||
|
db.session.add(new_validation)
|
||||||
|
db.session.commit()
|
||||||
|
return True
|
||||||
|
return False # ne peut pas valider
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
<li>N'enregistre pas de décision si l'étudiant a une ou plusieurs notes en ATTente.
|
<li>N'enregistre pas de décision si l'étudiant a une ou plusieurs notes en ATTente.
|
||||||
</li>
|
</li>
|
||||||
<li>L'assiduité n'est <b>pas</b> prise en compte. </li>
|
<li>L'assiduité n'est <b>pas</b> prise en compte. </li>
|
||||||
|
<li>Si l'étudiant remplit les conditions (a validé les 120 premiers ECTS du BUT)
|
||||||
|
alors lui enregistre un diplôme de "<b>DUT en 120 ECTS</b>".
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
En conséquence, saisir ensuite <b>manuellement les décisions manquantes</b>,
|
En conséquence, saisir ensuite <b>manuellement les décisions manquantes</b>,
|
||||||
|
Loading…
Reference in New Issue
Block a user