diff --git a/app/__init__.py b/app/__init__.py index 76f9471bb..237f53cea 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -201,7 +201,7 @@ def create_app(config_class=DevConfig): app.register_blueprint(auth_bp, url_prefix="/auth") from app.entreprises import bp as entreprises_bp - + app.register_blueprint(entreprises_bp, url_prefix="/ScoDoc/entreprises") from app.views import scodoc_bp @@ -297,7 +297,7 @@ def create_app(config_class=DevConfig): from app.scodoc.sco_bulletins_standard import BulletinGeneratorStandard from app.scodoc.sco_bulletins_ucac import BulletinGeneratorUCAC - # l'ordre est important, le premeir sera le "défaut" pour les nouveaux départements. + # l'ordre est important, le premier sera le "défaut" pour les nouveaux départements. sco_bulletins_generator.register_bulletin_class(BulletinGeneratorStandard) sco_bulletins_generator.register_bulletin_class(BulletinGeneratorLegacy) sco_bulletins_generator.register_bulletin_class(BulletinGeneratorUCAC) diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py index 1cbe4e59f..b27219413 100644 --- a/app/comp/bonus_spo.py +++ b/app/comp/bonus_spo.py @@ -456,8 +456,8 @@ class BonusBezier(BonusSportAdditif): class BonusBordeaux1(BonusSportMultiplicatif): - """Calcul bonus modules optionnels (sport, culture), règle IUT Bordeaux 1, sur moyenne générale - et UE. + """Calcul bonus modules optionnels (sport, culture), règle IUT Bordeaux 1, + sur moyenne générale et UEs.

Les étudiants de l'IUT peuvent suivre des enseignements optionnels de l'Université Bordeaux 1 (sport, théâtre) non rattachés à une unité d'enseignement. @@ -477,6 +477,29 @@ class BonusBordeaux1(BonusSportMultiplicatif): amplitude = 0.005 +# Exactement le même que Bordeaux: +class BonusBrest(BonusSportMultiplicatif): + """Calcul bonus modules optionnels (sport, culture), règle IUT de Brest, + sur moyenne générale et UEs. +

+ Les étudiants de l'IUT peuvent suivre des enseignements optionnels + de l'Université (sport, théâtre) non rattachés à une unité d'enseignement. +

+ Chaque point au-dessus de 10 sur 20 obtenus dans cet enseignement correspond à un % + qui augmente la moyenne de chaque UE et la moyenne générale.
+ Formule : pourcentage = (points au dessus de 10) / 2 +

+ Par exemple : sport 13/20 : chaque UE sera multipliée par 1+0,015, ainsi que la moyenne générale. +

+ """ + + name = "bonus_iut_brest" + displayed_name = "IUT de Brest" + classic_use_bonus_ues = True # s'applique aux UEs en DUT et LP + seuil_moy_gen = 10.0 + amplitude = 0.005 + + class BonusCachan1(BonusSportAdditif): """Calcul bonus optionnels (sport, culture), règle IUT de Cachan 1. diff --git a/app/comp/res_but.py b/app/comp/res_but.py index 20e63cba0..7bd79463f 100644 --- a/app/comp/res_but.py +++ b/app/comp/res_but.py @@ -98,7 +98,9 @@ class ResultatsSemestreBUT(NotesTableCompat): self.bonus_ues = bonus.get_bonus_ues() if self.bonus_ues is not None: self.etud_moy_ue += self.bonus_ues # somme les dataframes - self.etud_moy_ue.clip(lower=0.0, upper=20.0, inplace=True) + + # Clippe toutes les moyennes d'UE dans [0,20] + self.etud_moy_ue.clip(lower=0.0, upper=20.0, inplace=True) # Moyenne générale indicative: # (note: le bonus sport a déjà été appliqué aux moyennes d'UE, et impacte diff --git a/app/comp/res_classic.py b/app/comp/res_classic.py index ecc1e5004..91614935d 100644 --- a/app/comp/res_classic.py +++ b/app/comp/res_classic.py @@ -125,12 +125,16 @@ class ResultatsSemestreClassic(NotesTableCompat): # Applique le bonus moyenne générale renvoyé self.etud_moy_gen += bonus_mg - self.etud_moy_gen.clip(lower=0.0, upper=20.0, inplace=True) # compat nt, utilisé pour l'afficher sur les bulletins: self.bonus = bonus_mg + # --- UE capitalisées self.apply_capitalisation() + # Clippe toutes les moyennes dans [0,20] + self.etud_moy_ue.clip(lower=0.0, upper=20.0, inplace=True) + self.etud_moy_gen.clip(lower=0.0, upper=20.0, inplace=True) + # --- Classements: self.compute_rangs() @@ -142,7 +146,12 @@ class ResultatsSemestreClassic(NotesTableCompat): """La moyenne de l'étudiant dans le moduleimpl Result: valeur float (peut être NaN) ou chaîne "NI" (non inscrit ou DEM) """ - return self.modimpls_results[moduleimpl_id].etuds_moy_module.get(etudid, "NI") + try: + if self.modimpl_inscr_df[moduleimpl_id][etudid]: + return self.modimpls_results[moduleimpl_id].etuds_moy_module[etudid] + except KeyError: + pass + return "NI" def get_mod_stats(self, moduleimpl_id: int) -> dict: """Stats sur les notes obtenues dans un modimpl""" diff --git a/app/scodoc/sco_bulletins.py b/app/scodoc/sco_bulletins.py index 47947bd36..5f6f91e5b 100644 --- a/app/scodoc/sco_bulletins.py +++ b/app/scodoc/sco_bulletins.py @@ -441,7 +441,9 @@ def _sort_mod_by_matiere(modlist, nt, etudid): return matmod -def _ue_mod_bulletin(etudid, formsemestre_id, ue_id, modimpls, nt, version): +def _ue_mod_bulletin( + etudid, formsemestre_id, ue_id, modimpls, nt: NotesTableCompat, version +): """Infos sur les modules (et évaluations) dans une UE (ajoute les informations aux modimpls) Result: liste de modules de l'UE avec les infos dans chacun (seulement ceux où l'étudiant est inscrit).