From e6be8d9ecb4385f03a73aa10cd33c91dc2e1b46e Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 3 Mar 2022 09:42:12 +0100 Subject: [PATCH 1/3] Bonus Calais --- app/comp/bonus_spo.py | 39 +++++++++++++++++++++++++++++++++++++++ sco_version.py | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py index d1c3ddcab..1cbe4e59f 100644 --- a/app/comp/bonus_spo.py +++ b/app/comp/bonus_spo.py @@ -21,6 +21,7 @@ from flask import g from app.models.formsemestre import FormSemestre from app.scodoc.sco_codes_parcours import UE_SPORT +from app.scodoc.sco_codes_parcours import ParcoursDUT, ParcoursDUTMono from app.scodoc.sco_utils import ModuleType @@ -538,6 +539,44 @@ class BonusCachan1(BonusSportAdditif): self.bonus_ues[ue.id] = 0.0 +class BonusCalais(BonusSportAdditif): + """Calcul bonus modules optionnels (sport, culture), règle IUT LCO. + + Les étudiants de l'IUT LCO peuvent suivre des enseignements optionnels non + rattachés à une unité d'enseignement. Les points au-dessus de 10 + sur 20 obtenus dans chacune des matières optionnelles sont cumulés + dans la limite de 10 points. 6% de ces points cumulés s'ajoutent : + + """ + + name = "bonus_calais" + displayed_name = "IUT du Littoral" + bonus_max = 0.6 + seuil_moy_gen = 10.0 # au dessus de 10 + proportion_point = 0.06 # 6% + + def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan): + parcours = self.formsemestre.formation.get_parcours() + # Variantes de DUT ? + if ( + isinstance(parcours, ParcoursDUT) + or parcours.TYPE_PARCOURS == ParcoursDUTMono.TYPE_PARCOURS + ): # DUT + super().compute_bonus(sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan) + else: + self.classic_use_bonus_ues = True # pour les LP + super().compute_bonus(sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan) + ues = self.formsemestre.query_ues(with_sport=False).all() + ues_sans_bs = [ + ue for ue in ues if ue.acronyme[-2:].upper() != "BS" + ] # les 2 derniers cars forcés en majus + for ue in ues_sans_bs: + self.bonus_ues[ue.id] = 0.0 + + class BonusColmar(BonusSportAdditif): """Calcul bonus modules optionnels (sport, culture), règle IUT Colmar. diff --git a/sco_version.py b/sco_version.py index 337ea606c..55ce771df 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.1.70" +SCOVERSION = "9.1.71" SCONAME = "ScoDoc" From a0d8f89b182bebe69a6f7ed4877fa2cdf547dc54 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 3 Mar 2022 21:17:03 +0100 Subject: [PATCH 2/3] Clippe les moyennes finales dans [0,20] --- app/comp/res_but.py | 4 +++- app/comp/res_classic.py | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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..b36eaaf6c 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() From 3b7370f6dfb1f8aad9457acc8c62b5bd7ab10fda Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Thu, 3 Mar 2022 21:20:54 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Bonus=20Brest=20(identique=20=C3=A0=20Borde?= =?UTF-8?q?aux)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/comp/bonus_spo.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) 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.