diff --git a/app/comp/moy_ue.py b/app/comp/moy_ue.py index d4022dd360..e3c9620abe 100644 --- a/app/comp/moy_ue.py +++ b/app/comp/moy_ue.py @@ -36,6 +36,7 @@ from app.models import UniteEns, Module, ModuleImpl, ModuleUECoef from app.comp import moy_mod from app.models.formsemestre import FormSemestre from app.scodoc import sco_codes_parcours +from app.scodoc.sco_utils import ModuleType def df_load_module_coefs(formation_id: int, semestre_idx: int = None) -> pd.DataFrame: @@ -56,8 +57,15 @@ def df_load_module_coefs(formation_id: int, semestre_idx: int = None) -> pd.Data .filter(UniteEns.type != sco_codes_parcours.UE_SPORT) .order_by(UniteEns.semestre_idx, UniteEns.numero, UniteEns.acronyme) ) - modules = Module.query.filter_by(formation_id=formation_id).order_by( - Module.semestre_id, Module.module_type.desc(), Module.numero, Module.code + modules = ( + Module.query.filter_by(formation_id=formation_id) + .filter( + (Module.module_type == ModuleType.RESSOURCE) + | (Module.module_type == ModuleType.SAE) + ) + .order_by( + Module.semestre_id, Module.module_type.desc(), Module.numero, Module.code + ) ) if semestre_idx is not None: ues = ues.filter_by(semestre_idx=semestre_idx) @@ -76,7 +84,9 @@ def df_load_module_coefs(formation_id: int, semestre_idx: int = None) -> pd.Data query = query.filter(UniteEns.semestre_idx == semestre_idx) for mod_coef in query: - module_coefs_df[mod_coef.module_id][mod_coef.ue_id] = mod_coef.coef + if mod_coef.module_id in module_coefs_df: + module_coefs_df[mod_coef.module_id][mod_coef.ue_id] = mod_coef.coef + # silently ignore coefs associated to other modules (ie when module_type is changed) module_coefs_df.fillna(value=0, inplace=True) @@ -225,7 +235,7 @@ def compute_ue_moys_classic( ues: list, modimpl_inscr_df: pd.DataFrame, modimpl_coefs: np.array, -) -> pd.DataFrame: +) -> tuple: """Calcul de la moyenne d'UE en mode classique. La moyenne d'UE est un nombre (note/20), ou NI ou NA ou ERR NI non inscrit à (au moins un) module de cette UE