WIP bonus sport

This commit is contained in:
Emmanuel Viennet 2022-01-09 22:34:49 +01:00
parent 782e291725
commit 53630f08de
2 changed files with 54 additions and 9 deletions

View File

@ -28,6 +28,44 @@
from operator import mul from operator import mul
import pprint import pprint
"""
La fonction bonus_sport reçoit:
- notes_sport: la liste des notes des modules de sport et culture (une note par module);
- coefs: un coef (float) pondérant chaque note (la plupart des bonus les ignorent);
- infos: dictionnaire avec des données pouvant être utilisées pour les calculs.
Ces données dépendent du type de formation.
infos = {
"moy" : la moyenne générale (float). 0. en BUT.
"sem" : {
"date_debut_iso" : "2010-08-01", # date de début de semestre
}
"moy_ues": {
ue_id : { # ue_status
"is_capitalized" : True|False,
"moy" : float, # moyenne d'UE prise en compte (peut-être capitalisée)
"sum_coefs": float, # > 0 si UE avec la moyenne calculée
"cur_moy_ue": float, # moyenne de l'UE (sans capitalisation))
}
}
}
Les notes passées sont:
- pour les formations classiques, la moyenne dans le module, calculée comme d'habitude
(moyenne pondérée des notes d'évaluations);
- pour le BUT: pareil, *en ignorant* les éventuels poids des évaluations. Le coefficient
de l'évaluation est pris en compte, mais pas les poids vers les UE.
Pour modifier les moyennes d'UE:
- modifier infos["moy_ues"][ue_id][["cur_moy_ue"]
et, seulement si l'UE n'est pas capitalisée, infos["moy_ues"][ue_id][["moy"]/
La valeur retournée est:
- formations classiques: ajoutée à la moyenne générale
- BUT: ajoutée à chaque UE si le coef XXX
"""
def bonus_iutv(notes_sport, coefs, infos=None): def bonus_iutv(notes_sport, coefs, infos=None):
"""Calcul bonus modules optionels (sport, culture), règle IUT Villetaneuse """Calcul bonus modules optionels (sport, culture), règle IUT Villetaneuse
@ -39,6 +77,7 @@ def bonus_iutv(notes_sport, coefs, infos=None):
optionnelles sont cumulés et 5% de ces points cumulés s'ajoutent à optionnelles sont cumulés et 5% de ces points cumulés s'ajoutent à
la moyenne générale du semestre déjà obtenue par l'étudiant. la moyenne générale du semestre déjà obtenue par l'étudiant.
""" """
# breakpoint()
bonus = sum([(x - 10) / 20.0 for x in notes_sport if x > 10]) bonus = sum([(x - 10) / 20.0 for x in notes_sport if x > 10])
return bonus return bonus

View File

@ -382,8 +382,6 @@ def make_formsemestre_recapcomplet(
h += ["code_nip", "etudid"] h += ["code_nip", "etudid"]
F.append(h) F.append(h)
ue_index = [] # indices des moy UE dans l (pour appliquer style css)
def fmtnum(val): # conversion en nombre pour cellules excel def fmtnum(val): # conversion en nombre pour cellules excel
if keep_numeric: if keep_numeric:
try: try:
@ -434,9 +432,15 @@ def make_formsemestre_recapcomplet(
else: else:
l = [rank, nt.get_nom_short(etudid)] # rang, nom, l = [rank, nt.get_nom_short(etudid)] # rang, nom,
e["admission"] = {}
if not hidebac: if not hidebac:
bac = sco_bac.Baccalaureat(e["bac"], e["specialite"]) if etud_etat == scu.INSCRIT:
l.append(bac.abbrev()) e["admission"] = nt.etuds_dict[etudid].admission.first()
if e["admission"]:
bac = nt.etuds_dict[etudid].admission[0].get_bac()
l.append(bac.abbrev())
else:
l.append("")
if format[:3] == "xls" or format == "csv": # tous les groupes if format[:3] == "xls" or format == "csv": # tous les groupes
for partition in partitions: for partition in partitions:
@ -462,9 +466,11 @@ def make_formsemestre_recapcomplet(
l.append(rang_gr[partition["partition_id"]]) l.append(rang_gr[partition["partition_id"]])
# Nombre d'UE au dessus de 10 # Nombre d'UE au dessus de 10
nb_ue_ok = sum( # t[i] est une chaine :-)
[t[i] > 10 for i, ue in enumerate(ues, start=1) if ue["type"] != UE_SPORT] # nb_ue_ok = sum(
) # [t[i] > 10 for i, ue in enumerate(ues, start=1) if ue["type"] != UE_SPORT]
# )
ue_index = [] # indices des moy UE dans l (pour appliquer style css)
for i, ue in enumerate(ues, start=1): for i, ue in enumerate(ues, start=1):
if ue["type"] != UE_SPORT: if ue["type"] != UE_SPORT:
l.append( l.append(
@ -493,7 +499,7 @@ def make_formsemestre_recapcomplet(
j += 1 j += 1
if not hidebac: if not hidebac:
for k in admission_extra_cols: for k in admission_extra_cols:
l.append(e[k]) l.append(getattr(e["admission"], k, ""))
l.append( l.append(
nt.identdict[etudid]["code_nip"] or "" nt.identdict[etudid]["code_nip"] or ""
) # avant-derniere colonne = code_nip ) # avant-derniere colonne = code_nip
@ -543,7 +549,7 @@ def make_formsemestre_recapcomplet(
# n'affiche pas la moyenne d'UE dans ce cas # n'affiche pas la moyenne d'UE dans ce cas
if not hidemodules: if not hidemodules:
l.append("") l.append("")
ue_index.append(len(l) - 1) # ue_index.append(len(l) - 1)
if not hidemodules and not ue["is_external"]: if not hidemodules and not ue["is_external"]:
for modimpl in modimpls: for modimpl in modimpls:
if modimpl["module"]["ue_id"] == ue["ue_id"]: if modimpl["module"]["ue_id"] == ue["ue_id"]: