Fixed bug (migration to Numpy 2.0) and warnings. All tests OK.

This commit is contained in:
Emmanuel Viennet 2024-08-07 21:04:47 +02:00 committed by Iziram
parent 646c30bb21
commit 7c7d128b57
3 changed files with 24 additions and 18 deletions

View File

@ -445,9 +445,10 @@ class User(UserMixin, ScoDocModel):
def set_roles(self, roles, dept):
"set roles in the given dept"
self.user_roles = [
UserRole(user=self, role=r, dept=dept) for r in roles if isinstance(r, Role)
]
self.user_roles = []
for r in roles:
if isinstance(r, Role):
self.add_role(r, dept)
def get_roles(self):
"iterator on my roles"

View File

@ -541,17 +541,16 @@ def load_evaluations_poids(moduleimpl_id: int) -> tuple[pd.DataFrame, list]:
ue_ids = [ue.id for ue in ues]
evaluation_ids = [evaluation.id for evaluation in modimpl.evaluations]
evals_poids = pd.DataFrame(columns=ue_ids, index=evaluation_ids, dtype=float)
if (
modimpl.module.module_type == ModuleType.RESSOURCE
or modimpl.module.module_type == ModuleType.SAE
):
if modimpl.module.module_type in (ModuleType.RESSOURCE, ModuleType.SAE):
for ue_poids in EvaluationUEPoids.query.join(
EvaluationUEPoids.evaluation
).filter_by(moduleimpl_id=moduleimpl_id):
try:
evals_poids.loc[ue_poids.evaluation_id, ue_poids.ue_id] = ue_poids.poids
except KeyError:
pass # poids vers des UE qui n'existent plus ou sont dans un autre semestre...
if (
ue_poids.evaluation_id in evals_poids.index
and ue_poids.ue_id in evals_poids.columns
):
evals_poids.at[ue_poids.evaluation_id, ue_poids.ue_id] = ue_poids.poids
# ignore poids vers des UEs qui n'existent plus ou sont dans un autre semestre...
# Initialise poids non enregistrés:
default_poids = (

View File

@ -92,7 +92,7 @@ def df_load_module_coefs(formation_id: int, semestre_idx: int = None) -> pd.Data
for mod_coef in query:
if mod_coef.module_id in module_coefs_df:
module_coefs_df[mod_coef.module_id][mod_coef.ue_id] = mod_coef.coef
module_coefs_df.at[mod_coef.ue_id, mod_coef.module_id] = mod_coef.coef
# silently ignore coefs associated to other modules (ie when module_type is changed)
# Initialisation des poids non fixés:
@ -138,14 +138,16 @@ def df_load_modimpl_coefs(
)
for mod_coef in mod_coefs:
try:
modimpl_coefs_df.loc[mod_coef.ue_id, mod2impl[mod_coef.module_id]] = (
if (
mod_coef.ue_id in modimpl_coefs_df.index
and mod2impl[mod_coef.module_id] in modimpl_coefs_df.columns
):
modimpl_coefs_df.at[mod_coef.ue_id, mod2impl[mod_coef.module_id]] = (
mod_coef.coef
)
except IndexError:
# il peut y avoir en base des coefs sur des modules ou UE
# qui ont depuis été retirés de la formation
pass
# qui ont depuis été retirés de la formation : on ignore ces coefs
# Initialisation des poids non fixés:
# 0 pour modules normaux, 1. pour bonus (car par défaut, on veut qu'un bonus agisse
# sur toutes les UE)
@ -299,7 +301,11 @@ def compute_ue_moys_apc(
)
# Les "dispenses" sont très peu nombreuses et traitées en python:
for dispense_ue in dispense_ues:
etud_moy_ue_df[dispense_ue[1]][dispense_ue[0]] = 0.0
if (
dispense_ue[0] in etud_moy_ue_df.columns
and dispense_ue[1] in etud_moy_ue_df.index
):
etud_moy_ue_df.at[dispense_ue[1], dispense_ue[0]] = 0.0
return etud_moy_ue_df