Affichage des ECTS sur validation_rcues et parcour_formation. Closes 656.

This commit is contained in:
Emmanuel Viennet 2023-10-19 22:24:56 +02:00
parent 85005419ae
commit 66b8542d56
6 changed files with 53 additions and 23 deletions

View File

@ -497,7 +497,9 @@ def ue_associee_au_niveau_du_parcours(
return ues[0] if ues else None
def parcour_formation_competences(parcour: ApcParcours, formation: Formation) -> list:
def parcour_formation_competences(
parcour: ApcParcours, formation: Formation
) -> tuple[list[dict], float]:
"""
[
{
@ -514,7 +516,8 @@ def parcour_formation_competences(parcour: ApcParcours, formation: Formation) ->
}
}
}
]
],
ects_parcours (somme des ects des UEs associées)
"""
refcomp: ApcReferentielCompetences = formation.referentiel_competence
@ -598,4 +601,17 @@ def parcour_formation_competences(parcour: ApcParcours, formation: Formation) ->
else refcomp.competences.order_by(ApcCompetence.numero)
)
]
return competences
ects_parcours = sum(
sum(
(ni["ue_impair"].ects or 0) if ni["ue_impair"] else 0
for ni in cp["niveaux"].values()
)
for cp in competences
) + sum(
sum(
(ni["ue_pair"].ects or 0) if ni["ue_pair"] else 0
for ni in cp["niveaux"].values()
)
for cp in competences
)
return competences, ects_parcours

View File

@ -43,16 +43,20 @@ def validation_rcues(etud: Identite, formsemestre: FormSemestre, edit: bool = Fa
raise ScoNoReferentielCompetences(formation=formation)
parcour = formsemestre.etuds_inscriptions[etud.id].parcour
# Si non inscrit à un parcours, prend toutes les compétences
competences_parcour = cursus_but.parcour_formation_competences(parcour, formation)
competences_parcour, ects_parcours = cursus_but.parcour_formation_competences(
parcour, formation
)
ue_validation_by_niveau = get_ue_validation_by_niveau(refcomp, etud)
rcue_validation_by_niveau = get_rcue_validation_by_niveau(refcomp, etud)
ects_total = sum((v.ects() for v in ue_validation_by_niveau.values()))
ects_acquis = sum((v.ects() for v in ue_validation_by_niveau.values()))
return render_template(
"but/validation_rcues.j2",
competences_parcour=competences_parcour,
edit=edit,
ects_total=ects_total,
ects_acquis=ects_acquis,
ects_parcours=ects_parcours,
formation=formation,
parcour=parcour,
rcue_validation_by_niveau=rcue_validation_by_niveau,

View File

@ -171,9 +171,15 @@ select.validation_rcue {
margin-left: 32px;
}
div.recap_ects, div.link_edit {
margin-top: 8px;
margin-left: 16px;
margin-right: 16px;
margin-bottom: 16px;
font-weight: bold;
}
div.recap_ects {
background-color: var(--col-c3-2);
padding: 4px;
}
.link_edit a {
padding-right: 48px;

View File

@ -112,6 +112,9 @@
</div>
{% endfor %}
</div>
<div class="recap_ects">
{{"%g"|format(ects_parcours)}} ECTS dans ce parcours.
</div>
{% else %}
<div>
Choisissez un parcours...

View File

@ -141,7 +141,7 @@
</div>
<div class="recap_ects">
{{"%g"|format(ects_total)}} ECTS validés.
{{"%g"|format(ects_acquis)}} ECTS validés sur {{"%g"|format(ects_parcours)}}.
</div>
{% if sco.formsemestre.can_edit_jury() %}

View File

@ -74,14 +74,15 @@ def parcour_formation(formation_id: int, parcour_id: int = None) -> str:
if parcour is None:
raise ScoValueError("parcours invalide ou hors référentiel de formation")
competences_parcour = (
competences_parcour, ects_parcours = (
cursus_but.parcour_formation_competences(parcour, formation)
if parcour
else None
else (None, 0.0)
)
return render_template(
"but/parcour_formation.j2",
ects_parcours=ects_parcours,
formation=formation,
parcour=parcour,
competences_parcour=competences_parcour,