35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
|
##############################################################################
|
||
|
# ScoDoc
|
||
|
# Copyright (c) 1999 - 2022 Emmanuel Viennet. All rights reserved.
|
||
|
# See LICENSE
|
||
|
##############################################################################
|
||
|
|
||
|
"""Jury BUT: clacul des décisions de jury annuelles "automatiques"
|
||
|
"""
|
||
|
|
||
|
from flask import g, url_for
|
||
|
|
||
|
from app import db
|
||
|
from app.but import jury_but
|
||
|
from app.models.etudiants import Identite
|
||
|
from app.models.formsemestre import FormSemestre
|
||
|
from app.scodoc.sco_exceptions import ScoValueError
|
||
|
|
||
|
|
||
|
def formsemestre_validation_auto_but(formsemestre: FormSemestre) -> int:
|
||
|
"""Calcul automatique des décisions de jury sur une année BUT.
|
||
|
Returns: nombre d'étudiants "admis"
|
||
|
"""
|
||
|
if not formsemestre.formation.is_apc():
|
||
|
raise ScoValueError("fonction réservée aux formations BUT")
|
||
|
nb_admis = 0
|
||
|
for etudid in formsemestre.etuds_inscriptions:
|
||
|
etud: Identite = Identite.query.get(etudid)
|
||
|
deca = jury_but.DecisionsProposeesAnnee(etud, formsemestre)
|
||
|
if deca.admis: # année réussie
|
||
|
deca.record_all()
|
||
|
nb_admis += 1
|
||
|
|
||
|
db.session.commit()
|
||
|
return nb_admis
|