Jury BUT: complète logs étudiants. + cosmetic

This commit is contained in:
Emmanuel Viennet 2022-12-24 21:35:18 -03:00 committed by iziram
parent acc1ecf906
commit ec632dd43c
7 changed files with 46 additions and 20 deletions

View File

@ -356,9 +356,9 @@ class DecisionsProposeesAnnee(DecisionsProposees):
dec_ue.compute_codes()
# Reste à attribuer ADM, ADJ, PASD, PAS1NCI, RED, NAR
expl_rcues = (
f"{self.nb_validables} niveau validable(s) sur {self.nb_competences}"
)
plural = self.nb_validables > 1
expl_rcues = f"""{self.nb_validables} niveau{"x" if plural else ""} validable{
"s" if plural else ""} sur {self.nb_competences}"""
if self.admis:
self.codes = [sco_codes.ADM] + self.codes
self.explanation = expl_rcues
@ -778,6 +778,11 @@ class DecisionsProposeesAnnee(DecisionsProposees):
ordre=self.annee_but,
)
for validation in validations:
Scolog.logdb(
"jury_but",
etudid=self.etud.id,
msg=f"Validation année BUT{self.annee_but}: effacée",
)
db.session.delete(validation)
db.session.flush()
self.invalidate_formsemestre_cache()
@ -933,7 +938,7 @@ class DecisionsProposeesRCUE(DecisionsProposees):
Scolog.logdb(
method="jury_but",
etudid=self.etud.id,
msg=f"Validation RCUE {repr(self.rcue)}",
msg=f"Validation {self.rcue}: {code}",
)
db.session.add(self.validation)
if self.rcue.formsemestre_1 is not None:
@ -1088,6 +1093,11 @@ class DecisionsProposeesUE(DecisionsProposees):
self.erase()
if code is None:
self.validation = None
Scolog.logdb(
method="jury_but",
etudid=self.etud.id,
msg=f"Validation UE {self.ue.id} {self.ue.acronyme}: effacée",
)
else:
self.validation = ScolarFormSemestreValidation(
etudid=self.etud.id,
@ -1099,7 +1109,7 @@ class DecisionsProposeesUE(DecisionsProposees):
Scolog.logdb(
method="jury_but",
etudid=self.etud.id,
msg=f"Validation UE {self.ue.id}",
msg=f"Validation UE {self.ue.id} {self.ue.acronyme}({self.moy_ue}): {code}",
)
db.session.add(self.validation)
log(f"DecisionsProposeesUE: recording {self.validation}")
@ -1115,6 +1125,11 @@ class DecisionsProposeesUE(DecisionsProposees):
)
for validation in validations:
log(f"DecisionsProposeesUE: deleting {validation}")
Scolog.logdb(
method="jury_but",
etudid=self.etud.id,
msg=f"Validation UE {validation.ue.id} {validation.ue.acronyme}: effacée",
)
db.session.delete(validation)
db.session.flush()

View File

@ -61,11 +61,12 @@ def show_etud(deca: DecisionsProposeesAnnee, read_only: bool = True) -> str:
<span>({'non ' if deca.code_valide is None else ''}enregistrée)</span>
<span>{erase_span}</span>
</div>
<div class="but_explanation">{deca.explanation}</div>
"""
)
div_explanation = f"""<div class="but_explanation">{deca.explanation}</div>"""
else:
H.append("""<div><em>Pas de décision annuelle (sem. impair).</em></div>""")
div_explanation = ""
H.append("""</div>""")
formsemestre_1 = deca.formsemestre_impair
@ -80,8 +81,10 @@ def show_etud(deca: DecisionsProposeesAnnee, read_only: bool = True) -> str:
formsemestre_1, formsemestre_2 = formsemestre_2, formsemestre_1
H.append(
f"""
<div class="titre_niveaux"><b>Niveaux de compétences et unités d'enseignement du BUT{
deca.annee_but}</b></div>
<div class="titre_niveaux">
<b>Niveaux de compétences et unités d'enseignement du BUT{deca.annee_but}</b>
</div>
{div_explanation}
<div class="but_annee">
<div class="titre"></div>
<div class="titre">{"S" +str(formsemestre_1.semestre_id)

View File

@ -145,6 +145,11 @@ class RegroupementCoherentUE:
self.ue_1.acronyme}({self.moy_ue_1}) {
self.ue_2.acronyme}({self.moy_ue_2})>"""
def __str__(self) -> str:
return f"""RCUE {
self.ue_1.acronyme}({self.moy_ue_1}) + {
self.ue_2.acronyme}({self.moy_ue_2})"""
def query_validations(
self,
) -> flask_sqlalchemy.BaseQuery: # list[ApcValidationRCUE]

View File

@ -116,7 +116,9 @@ class ScolarAutorisationInscription(db.Model):
semestre_id=semestre_id,
)
db.session.add(autorisation)
Scolog.logdb("autorise_etud", etudid=etudid, msg=f"passage vers S{semestre_id}")
Scolog.logdb(
"autorise_etud", etudid=etudid, msg=f"Passage vers S{semestre_id}: autorisé"
)
@classmethod
def delete_autorisation_etud(
@ -133,7 +135,7 @@ class ScolarAutorisationInscription(db.Model):
Scolog.logdb(
"autorise_etud",
etudid=etudid,
msg=f"annule passage vers S{autorisation.semestre_id}",
msg=f"Passage vers S{autorisation.semestre_id}: effacé",
)
db.session.flush()

View File

@ -39,7 +39,7 @@ from app import db, log
from app.comp import res_sem
from app.comp.res_compat import NotesTableCompat
from app.models import FormSemestre
from app.models import FormSemestre, UniteEns
from app.models.notes import etud_has_notes_attente
from app.models.validations import (
ScolarAutorisationInscription,
@ -1171,8 +1171,8 @@ def do_formsemestre_validate_previous_ue(
"""
formsemestre = FormSemestre.query.get_or_404(formsemestre_id)
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
ue: UniteEns = UniteEns.query.get_or_404(ue_id)
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
cnx = ndb.GetDBConnexion()
if ue_coefficient != None:
sco_formsemestre.do_formsemestre_uecoef_edit_or_create(
@ -1197,10 +1197,10 @@ def do_formsemestre_validate_previous_ue(
cnx,
method="formsemestre_validate_previous_ue",
etudid=etudid,
msg="Validation UE %s" % ue_id,
msg=f"Validation UE prec. {ue_id} {ue.acronyme}: {code}",
commit=False,
)
_invalidate_etud_formation_caches(etudid, sem["formation_id"])
_invalidate_etud_formation_caches(etudid, formsemestre.formation_id)
cnx.commit()

View File

@ -1,18 +1,17 @@
/* Saisie décision de jury BUT */
.jury_but form {
.jury_but {
font-family: Verdana, Geneva, Tahoma, sans-serif;
}
.jury_but .titre_parcours {
.jury_but .titre_parcours,
.jury_but .nom_etud {
font-size: 130%;
padding-bottom: 12px;
}
.jury_but .nom_etud {
font-size: 100%;
font-weight: bold;
padding-bottom: 12px;
}
.but_annee {
@ -111,7 +110,9 @@ div.but_settings {
.but_explanation {
color: blueviolet;
font-style: italic;
padding-top: 12px;
padding-top: 4px;
padding-bottom: 12px;
;
}
select:disabled {

View File

@ -2,7 +2,7 @@
<p><em>Ci-dessous la signification de chaque code est expliquée,
ainsi que la correspondance avec certains codes préconisés par
l'AMUE et l'ADIUT pour Apogée.
</em>
</em><br />
On distingue les codes ScoDoc (utilisés ci-dessus et dans les différentes
tables générées par ScoDoc) et leur transcription vers Apogée lors des exports
(transcription paramétrable par votre administrateur ScoDoc).