diff --git a/app/but/cursus_but.py b/app/but/cursus_but.py index f8b28675f9..d1e3f119d3 100644 --- a/app/but/cursus_but.py +++ b/app/but/cursus_but.py @@ -461,7 +461,7 @@ def formsemestre_warning_apc_setup( } if niveaux_ids != ues_niveaux_ids: H.append( - f"""Parcours {parcour.code if parcour else "Tronc commun"} : + f"""Parcours {parcour.code if parcour else "Tronc commun"} : {len(ues_niveaux_ids)} UE avec niveaux mais {len(niveaux_ids)} niveaux à valider ! """ @@ -473,7 +473,7 @@ def formsemestre_warning_apc_setup(
Vérifiez les parcours cochés pour ce semestre, +
Vérifiez les parcours cochés pour ce semestre, et les associations entre UE et niveaux dans la formation. @@ -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 @@ -538,7 +541,7 @@ def parcour_formation_competences(parcour: ApcParcours, formation: Formation) -> if len(niveaux) > 0: if len(niveaux) > 1: log( - f"""_niveau_ues: plus d'un niveau pour {competence} + f"""_niveau_ues: plus d'un niveau pour {competence} annee {annee} {("parcours " + parcour.code) if parcour else ""}""" ) niveau = niveaux[0] @@ -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 diff --git a/app/but/validations_view.py b/app/but/validations_view.py index 344214a590..ef7dd88252 100644 --- a/app/but/validations_view.py +++ b/app/but/validations_view.py @@ -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, diff --git a/app/static/css/parcour_formation.css b/app/static/css/parcour_formation.css index 3d630d0a6b..845a5a9e41 100644 --- a/app/static/css/parcour_formation.css +++ b/app/static/css/parcour_formation.css @@ -171,10 +171,16 @@ 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; -} \ No newline at end of file +} diff --git a/app/templates/but/parcour_formation.j2 b/app/templates/but/parcour_formation.j2 index c80a38b2cf..cd61fe059d 100644 --- a/app/templates/but/parcour_formation.j2 +++ b/app/templates/but/parcour_formation.j2 @@ -51,19 +51,19 @@ {% for parc in formation.referentiel_competence.parcours %}
{% endfor %} @@ -83,7 +83,7 @@Cette page représente le parcours {{parcour.code}} du référentiel de compétence {{formation.referentiel_competence.specialite}}, et permet d'associer à chaque semestre d'un niveau de compétence une UE de la formation - {{formation.html()}} - .
+ .Le symbole TC désigne un niveau du tronc commun - (c'est à dire présent dans tous les parcours de la spécialité).
+ (c'est à dire présent dans tous les parcours de la spécialité). -Ce formulaire ne vérifie pas si l'UE est bien conçue pour ce parcours.
+Ce formulaire ne vérifie pas si l'UE est bien conçue pour ce parcours.
Les modifications sont enregistrées au fur et à mesure.
@@ -186,4 +189,4 @@ function assoc_ue_niveau(event, niveau_id) { } -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app/templates/but/validation_rcues.j2 b/app/templates/but/validation_rcues.j2 index 4c30123eac..484e87cef1 100644 --- a/app/templates/but/validation_rcues.j2 +++ b/app/templates/but/validation_rcues.j2 @@ -141,7 +141,7 @@