1
0
forked from ScoDoc/ScoDoc

Bulletin BUT: n'affiche que les UE du parcours de l'étudiant.

This commit is contained in:
Emmanuel Viennet 2022-06-02 10:48:28 +02:00
parent ad5bdd03d1
commit 2b2fb80403
4 changed files with 20 additions and 9 deletions

View File

@ -274,6 +274,13 @@ class BulletinBUT:
etat_inscription = etud.inscription_etat(formsemestre.id) etat_inscription = etud.inscription_etat(formsemestre.id)
nb_inscrits = self.res.get_inscriptions_counts()[scu.INSCRIT] nb_inscrits = self.res.get_inscriptions_counts()[scu.INSCRIT]
published = (not formsemestre.bul_hide_xml) or force_publishing published = (not formsemestre.bul_hide_xml) or force_publishing
if formsemestre.formation.referentiel_competence is None:
etud_ues_ids = {
ue.id for ue in res.ues if res.modimpls_in_ue(ue.id, etud.id)
}
else:
etud_ues_ids = res.etud_ues_ids(etud.id)
d = { d = {
"version": "0", "version": "0",
"type": "BUT", "type": "BUT",
@ -365,10 +372,7 @@ class BulletinBUT:
) )
for ue in res.ues for ue in res.ues
# si l'UE comporte des modules auxquels on est inscrit: # si l'UE comporte des modules auxquels on est inscrit:
if ( if ((ue.type == UE_SPORT) or ue.id in etud_ues_ids)
(ue.type == UE_SPORT)
or self.res.modimpls_in_ue(ue.id, etud.id)
)
}, },
"semestre": semestre_infos, "semestre": semestre_infos,
}, },

View File

@ -6,6 +6,7 @@
"""Résultats semestres BUT """Résultats semestres BUT
""" """
from collections.abc import Generator
import time import time
import numpy as np import numpy as np
import pandas as pd import pandas as pd
@ -216,9 +217,13 @@ class ResultatsSemestreBUT(NotesTableCompat):
] ]
return ues_inscr_parcours_df return ues_inscr_parcours_df
def etud_ues(self, etudid: int) -> list[int]: def etud_ues_ids(self, etudid: int) -> list[int]:
"""Liste des id d'UE auxquelles l'étudiant est inscrit (sans bonus). """Liste des id d'UE auxquelles l'étudiant est inscrit (sans bonus).
(surchargée en BUT pour prendre en compte les parcours) (surchargée en BUT pour prendre en compte les parcours)
""" """
s = self.ues_inscr_parcours_df.loc[etudid] s = self.ues_inscr_parcours_df.loc[etudid]
return s.index[s.notna()] return s.index[s.notna()]
def etud_ues(self, etudid: int) -> Generator[UniteEns]:
"""Liste des UE auxquelles l'étudiant est inscrit (sans bonus)."""
return (UniteEns.query.get(ue_id) for ue_id in self.etud_ues_ids(etudid))

View File

@ -112,7 +112,7 @@ class ResultatsSemestre(ResultatsCache):
"dict { etudid : indice dans les inscrits }" "dict { etudid : indice dans les inscrits }"
return {e.id: idx for idx, e in enumerate(self.etuds)} return {e.id: idx for idx, e in enumerate(self.etuds)}
def etud_ues(self, etudid: int) -> list[int]: def etud_ues_ids(self, etudid: int) -> list[int]:
"""Liste des UE auxquelles l'etudiant est inscrit, sans bonus """Liste des UE auxquelles l'etudiant est inscrit, sans bonus
(surchargée en BUT pour prendre en compte les parcours) (surchargée en BUT pour prendre en compte les parcours)
""" """
@ -630,7 +630,7 @@ class ResultatsSemestre(ResultatsCache):
f"_{col_id}_target_attrs" f"_{col_id}_target_attrs"
] = f""" title="{modimpl.module.titre} ({nom_resp})" """ ] = f""" title="{modimpl.module.titre} ({nom_resp})" """
modimpl_ids.add(modimpl.id) modimpl_ids.add(modimpl.id)
nb_ues_etud_parcours = len(self.etud_ues(etudid)) nb_ues_etud_parcours = len(self.etud_ues_ids(etudid))
ue_valid_txt = ( ue_valid_txt = (
ue_valid_txt_html ue_valid_txt_html
) = f"{nb_ues_validables}/{nb_ues_etud_parcours}" ) = f"{nb_ues_validables}/{nb_ues_etud_parcours}"

View File

@ -2,10 +2,12 @@
<h2>{% if not read_only %}Édition des c{% else %}C{%endif%}oefficients des modules vers les UEs</h2> <h2>{% if not read_only %}Édition des c{% else %}C{%endif%}oefficients des modules vers les UEs</h2>
<div class="help"> <div class="help">
{% if not read_only %} {% if not read_only %}
Double-cliquer pour changer une valeur. <p>Double-cliquer pour changer une valeur.
Les valeurs sont automatiquement enregistrées au fur et à mesure. Les valeurs sont automatiquement enregistrées au fur et à mesure.
</p>
{% endif %} {% endif %}
<p>Chaque ligne représente une ressource ou SAÉ, et chaque colonne une Unité d'Enseignement (UE).
</p>
</div> </div>
<form class="semestre_selector">Semestre: <form class="semestre_selector">Semestre:
<select onchange="this.form.submit()"" name="semestre_idx" id="semestre_idx"> <select onchange="this.form.submit()"" name="semestre_idx" id="semestre_idx">