forked from ScoDoc/ScoDoc
Merge branch 'master' of https://scodoc.org/git/viennet/ScoDoc into dev93
This commit is contained in:
commit
41b8b675f0
@ -711,7 +711,8 @@ class BonusIUTRennes1(BonusSportAdditif):
|
|||||||
<li>Les étudiants peuvent suivre un ou plusieurs activités optionnelles notées.
|
<li>Les étudiants peuvent suivre un ou plusieurs activités optionnelles notées.
|
||||||
La meilleure des notes obtenue est prise en compte, si elle est supérieure à 10/20.
|
La meilleure des notes obtenue est prise en compte, si elle est supérieure à 10/20.
|
||||||
</li>
|
</li>
|
||||||
<li>Le vingtième des points au dessus de 10 est ajouté à la moyenne des UE.
|
<li>Le vingtième des points au dessus de 10 est ajouté à la moyenne de chaque UE
|
||||||
|
en BUT, ou à la moyenne générale pour les autres formations.
|
||||||
</li>
|
</li>
|
||||||
<li> Exemple: un étudiant ayant 16/20 bénéficiera d'un bonus de (16-10)/20 = 0,3 points
|
<li> Exemple: un étudiant ayant 16/20 bénéficiera d'un bonus de (16-10)/20 = 0,3 points
|
||||||
sur chaque UE.
|
sur chaque UE.
|
||||||
@ -720,10 +721,10 @@ class BonusIUTRennes1(BonusSportAdditif):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
name = "bonus_iut_rennes1"
|
name = "bonus_iut_rennes1"
|
||||||
displayed_name = "IUTs de Rennes 1 (Lannion, St Malo)"
|
displayed_name = "IUTs de Rennes 1 (Lannion, Rennes, St Brieuc, St Malo)"
|
||||||
seuil_moy_gen = 10.0
|
seuil_moy_gen = 10.0
|
||||||
proportion_point = 1 / 20.0
|
proportion_point = 1 / 20.0
|
||||||
classic_use_bonus_ues = True
|
classic_use_bonus_ues = False
|
||||||
# Adapté de BonusTarbes, mais s'applique aussi en classic
|
# Adapté de BonusTarbes, mais s'applique aussi en classic
|
||||||
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
|
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
|
||||||
"""calcul du bonus"""
|
"""calcul du bonus"""
|
||||||
|
@ -1,492 +0,0 @@
|
|||||||
# -*- mode: python -*-
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# Gestion scolarite IUT
|
|
||||||
#
|
|
||||||
# Copyright (c) 1999 - 2022 Emmanuel Viennet. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
# Emmanuel Viennet emmanuel.viennet@viennet.net
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
from operator import mul
|
|
||||||
import pprint
|
|
||||||
|
|
||||||
""" ANCIENS BONUS SPORT pour ScoDoc < 9.2 NON UTILISES A PARTIR DE 9.2 (voir comp/bonus_spo.py)
|
|
||||||
|
|
||||||
La fonction bonus_sport reçoit:
|
|
||||||
|
|
||||||
- notes_sport: la liste des notes des modules de sport et culture (une note par module
|
|
||||||
de l'UE de type sport/culture, toujours dans remise sur 20);
|
|
||||||
- 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: valeur multipliée par la somme des coefs modules sport ajoutée à chaque UE.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutv(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Villetaneuse
|
|
||||||
|
|
||||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
|
||||||
de l'Université Paris 13 (sports, musique, deuxième langue,
|
|
||||||
culture, etc) 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 et 5% de ces points cumulés s'ajoutent à
|
|
||||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
|
||||||
"""
|
|
||||||
bonus = sum([(x - 10) / 20.0 for x in notes_sport if x > 10])
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_direct(notes_sport, coefs, infos=None):
|
|
||||||
"""Un bonus direct et sans chichis: les points sont directement ajoutés à la moyenne générale.
|
|
||||||
Les coefficients sont ignorés: tous les points de bonus sont sommés.
|
|
||||||
(rappel: la note est ramenée sur 20 avant application).
|
|
||||||
"""
|
|
||||||
return sum(notes_sport)
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iut_stdenis(notes_sport, coefs, infos=None):
|
|
||||||
"""Semblable à bonus_iutv mais total limité à 0.5 points."""
|
|
||||||
points = sum([x - 10 for x in notes_sport if x > 10]) # points au dessus de 10
|
|
||||||
bonus = points * 0.05 # ou / 20
|
|
||||||
return min(bonus, 0.5) # bonus limité à 1/2 point
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_colmar(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Colmar.
|
|
||||||
|
|
||||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
|
||||||
de l'U.H.A. (sports, musique, deuxième langue, culture, etc) 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. 5% de ces points cumulés s'ajoutent à
|
|
||||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
|
||||||
|
|
||||||
"""
|
|
||||||
# les coefs sont ignorés
|
|
||||||
points = sum([x - 10 for x in notes_sport if x > 10])
|
|
||||||
points = min(10, points) # limite total à 10
|
|
||||||
bonus = points / 20.0 # 5%
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutva(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Ville d'Avray
|
|
||||||
|
|
||||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
|
||||||
de l'Université Paris 10 (C2I) non rattachés à une unité d'enseignement.
|
|
||||||
Si la note est >= 10 et < 12, bonus de 0.1 point
|
|
||||||
Si la note est >= 12 et < 16, bonus de 0.2 point
|
|
||||||
Si la note est >= 16, bonus de 0.3 point
|
|
||||||
Ce bonus s'ajoute à la moyenne générale du semestre déjà obtenue par
|
|
||||||
l'étudiant.
|
|
||||||
"""
|
|
||||||
sumc = sum(coefs) # assumes sum. coefs > 0
|
|
||||||
note_sport = sum(map(mul, notes_sport, coefs)) / sumc # moyenne pondérée
|
|
||||||
if note_sport >= 16.0:
|
|
||||||
return 0.3
|
|
||||||
if note_sport >= 12.0:
|
|
||||||
return 0.2
|
|
||||||
if note_sport >= 10.0:
|
|
||||||
return 0.1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iut1grenoble_2017(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus sport IUT Grenoble sur la moyenne générale (version 2017)
|
|
||||||
|
|
||||||
La note de sport de nos étudiants va de 0 à 5 points.
|
|
||||||
Chaque point correspond à un % qui augmente la moyenne de chaque UE et la moyenne générale.
|
|
||||||
Par exemple : note de sport 2/5 : la moyenne générale sera augmentée de 2%.
|
|
||||||
|
|
||||||
Calcul ici du bonus sur moyenne générale
|
|
||||||
"""
|
|
||||||
# les coefs sont ignorés
|
|
||||||
# notes de 0 à 5
|
|
||||||
points = sum([x for x in notes_sport])
|
|
||||||
factor = (points / 4.0) / 100.0
|
|
||||||
bonus = infos["moy"] * factor
|
|
||||||
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_lille(notes_sport, coefs, infos=None):
|
|
||||||
"""calcul bonus modules optionels (sport, culture), règle IUT Villeneuve d'Ascq
|
|
||||||
|
|
||||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
|
||||||
de l'Université Lille 1 (sports,etc) 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 et 4% (2% avant aout 2010) de ces points cumulés s'ajoutent à
|
|
||||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
|
||||||
"""
|
|
||||||
if (
|
|
||||||
infos["sem"]["date_debut_iso"] > "2010-08-01"
|
|
||||||
): # changement de regle en aout 2010.
|
|
||||||
return sum([(x - 10) / 25.0 for x in notes_sport if x > 10])
|
|
||||||
return sum([(x - 10) / 50.0 for x in notes_sport if x > 10])
|
|
||||||
|
|
||||||
|
|
||||||
# Fonction Le Havre, par Dom. Soud.
|
|
||||||
def bonus_iutlh(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus sport IUT du Havre sur moyenne générale et UE
|
|
||||||
|
|
||||||
La note de sport de nos étudiants va de 0 à 20 points.
|
|
||||||
m2=m1*(1+0.005*((10-N1)+(10-N2))
|
|
||||||
m2 : Nouvelle moyenne de l'unité d'enseignement si note de sport et/ou de langue supérieure à 10
|
|
||||||
m1 : moyenne de l'unité d'enseignement avant bonification
|
|
||||||
N1 : note de sport si supérieure à 10
|
|
||||||
N2 : note de seconde langue si supérieure à 10
|
|
||||||
Par exemple : sport 15/20 et langue 12/20 : chaque UE sera multipliée par 1+0.005*7, ainsi que la moyenne générale.
|
|
||||||
Calcul ici de la moyenne générale et moyennes d'UE non capitalisées.
|
|
||||||
"""
|
|
||||||
# les coefs sont ignorés
|
|
||||||
points = sum([x - 10 for x in notes_sport if x > 10])
|
|
||||||
points = min(10, points) # limite total à 10
|
|
||||||
factor = 1.0 + (0.005 * points)
|
|
||||||
# bonus nul puisque les moyennes sont directement modifiées par factor
|
|
||||||
bonus = 0
|
|
||||||
# Modifie la moyenne générale
|
|
||||||
infos["moy"] = infos["moy"] * factor
|
|
||||||
# Modifie les moyennes de toutes les UE:
|
|
||||||
for ue_id in infos["moy_ues"]:
|
|
||||||
ue_status = infos["moy_ues"][ue_id]
|
|
||||||
if ue_status["sum_coefs"] > 0:
|
|
||||||
# modifie moyenne UE ds semestre courant
|
|
||||||
ue_status["cur_moy_ue"] = ue_status["cur_moy_ue"] * factor
|
|
||||||
if not ue_status["is_capitalized"]:
|
|
||||||
# si non capitalisee, modifie moyenne prise en compte
|
|
||||||
ue_status["moy"] = ue_status["cur_moy_ue"]
|
|
||||||
|
|
||||||
# open('/tmp/log','a').write( pprint.pformat(ue_status) + '\n\n' )
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_nantes(notes_sport, coefs, infos=None):
|
|
||||||
"""IUT de Nantes (Septembre 2018)
|
|
||||||
Nous avons différents types de bonification
|
|
||||||
bonfication Sport / Culture / engagement citoyen
|
|
||||||
Nous ajoutons sur le bulletin une bonification de 0,2 pour chaque item
|
|
||||||
la bonification totale ne doit pas excéder les 0,5 point.
|
|
||||||
Sur le bulletin nous ne mettons pas une note sur 20 mais directement les bonifications.
|
|
||||||
|
|
||||||
Dans ScoDoc: on a déclaré une UE "sport&culture" dans laquelle on aura des modules
|
|
||||||
pour chaque activité (Sport, Associations, ...)
|
|
||||||
avec à chaque fois une note (ScoDoc l'affichera comme une note sur 20, mais en fait ce sera la
|
|
||||||
valeur de la bonification: entrer 0,1/20 signifiera un bonus de 0,1 point la moyenne générale)
|
|
||||||
"""
|
|
||||||
bonus = min(0.5, sum([x for x in notes_sport])) # plafonnement à 0.5 points
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
# Bonus sport IUT Tours
|
|
||||||
def bonus_tours(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus sport & culture IUT Tours sur moyenne generale
|
|
||||||
|
|
||||||
La note de sport & culture de nos etudiants est applique sur la moyenne generale.
|
|
||||||
"""
|
|
||||||
return min(1.0, sum(notes_sport)) # bonus maximum de 1 point
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutr(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul du bonus , règle de l'IUT de Roanne
|
|
||||||
(contribuée par Raphael C., nov 2012)
|
|
||||||
|
|
||||||
Le bonus est compris entre 0 et 0.35 point.
|
|
||||||
cette procédure modifie la moyenne de chaque UE capitalisable.
|
|
||||||
|
|
||||||
"""
|
|
||||||
# modifie les moyennes de toutes les UE:
|
|
||||||
# le bonus est le minimum entre 0.35 et la somme de toutes les bonifs
|
|
||||||
bonus = min(0.35, sum([x for x in notes_sport]))
|
|
||||||
for ue_id in infos["moy_ues"]:
|
|
||||||
# open('/tmp/log','a').write( str(ue_id) + infos['moy_ues'] + '\n\n' )
|
|
||||||
ue_status = infos["moy_ues"][ue_id]
|
|
||||||
if ue_status["sum_coefs"] > 0:
|
|
||||||
# modifie moyenne UE dans semestre courant
|
|
||||||
ue_status["cur_moy_ue"] = ue_status["cur_moy_ue"] + bonus
|
|
||||||
if not ue_status["is_capitalized"]:
|
|
||||||
ue_status["moy"] = ue_status["cur_moy_ue"]
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutam(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport), regle IUT d'Amiens.
|
|
||||||
Les etudiants de l'IUT peuvent suivre des enseignements optionnels.
|
|
||||||
Si la note est de 10.00 a 10.49 -> 0.50% de la moyenne
|
|
||||||
Si la note est de 10.50 a 10.99 -> 0.75%
|
|
||||||
Si la note est de 11.00 a 11.49 -> 1.00%
|
|
||||||
Si la note est de 11.50 a 11.99 -> 1.25%
|
|
||||||
Si la note est de 12.00 a 12.49 -> 1.50%
|
|
||||||
Si la note est de 12.50 a 12.99 -> 1.75%
|
|
||||||
Si la note est de 13.00 a 13.49 -> 2.00%
|
|
||||||
Si la note est de 13.50 a 13.99 -> 2.25%
|
|
||||||
Si la note est de 14.00 a 14.49 -> 2.50%
|
|
||||||
Si la note est de 14.50 a 14.99 -> 2.75%
|
|
||||||
Si la note est de 15.00 a 15.49 -> 3.00%
|
|
||||||
Si la note est de 15.50 a 15.99 -> 3.25%
|
|
||||||
Si la note est de 16.00 a 16.49 -> 3.50%
|
|
||||||
Si la note est de 16.50 a 16.99 -> 3.75%
|
|
||||||
Si la note est de 17.00 a 17.49 -> 4.00%
|
|
||||||
Si la note est de 17.50 a 17.99 -> 4.25%
|
|
||||||
Si la note est de 18.00 a 18.49 -> 4.50%
|
|
||||||
Si la note est de 18.50 a 18.99 -> 4.75%
|
|
||||||
Si la note est de 19.00 a 20.00 -> 5.00%
|
|
||||||
Ce bonus s'ajoute a la moyenne generale du semestre de l'etudiant.
|
|
||||||
"""
|
|
||||||
# une seule note
|
|
||||||
note_sport = notes_sport[0]
|
|
||||||
if note_sport < 10.0:
|
|
||||||
return 0.0
|
|
||||||
prc = min((int(2 * note_sport - 20.0) + 2) * 0.25, 5)
|
|
||||||
bonus = infos["moy"] * prc / 100.0
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_saint_etienne(notes_sport, coefs, infos=None):
|
|
||||||
"""IUT de Saint-Etienne (jan 2014)
|
|
||||||
Nous avons différents types de bonification
|
|
||||||
bonfication Sport / Associations
|
|
||||||
coopératives de département / Bureau Des Étudiants
|
|
||||||
/ engagement citoyen / Langues optionnelles
|
|
||||||
Nous ajoutons sur le bulletin une bonification qui varie entre 0,1 et 0,3 ou 0,35 pour chaque item
|
|
||||||
la bonification totale ne doit pas excéder les 0,6 point.
|
|
||||||
Sur le bulletin nous ne mettons pas une note sur 20 mais directement les bonifications.
|
|
||||||
|
|
||||||
|
|
||||||
Dans ScoDoc: on a déclarer une UE "sport&culture" dans laquelle on aura des modules
|
|
||||||
pour chaque activité (Sport, Associations, ...)
|
|
||||||
avec à chaque fois une note (ScoDoc l'affichera comme une note sur 20, mais en fait ce sera la
|
|
||||||
valeur de la bonification: entrer 0,1/20 signifiera un bonus de 0,1 point la moyenne générale)
|
|
||||||
"""
|
|
||||||
bonus = min(0.6, sum([x for x in notes_sport])) # plafonnement à 0.6 points
|
|
||||||
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutTarbes(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionnels
|
|
||||||
(sport, Langues, action sociale, Théâtre), règle IUT Tarbes
|
|
||||||
Les coefficients ne sont pas pris en compte,
|
|
||||||
seule la meilleure note est prise en compte
|
|
||||||
le 1/30ème des points au-dessus de 10 sur 20 est retenu et s'ajoute à
|
|
||||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
|
||||||
"""
|
|
||||||
bonus = max([(x - 10) / 30.0 for x in notes_sport if x > 10] or [0.0])
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutSN(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus sport IUT Saint-Nazaire sur moyenne générale
|
|
||||||
|
|
||||||
La note de sport de nos étudiants va de 0 à 5 points.
|
|
||||||
La note de culture idem,
|
|
||||||
Elles sont cumulables,
|
|
||||||
Chaque point correspond à un % qui augmente la moyenne générale.
|
|
||||||
Par exemple : note de sport 2/5 : la moyenne générale sera augmentée de 2%.
|
|
||||||
|
|
||||||
Calcul ici du bonus sur moyenne générale et moyennes d'UE non capitalisées.
|
|
||||||
"""
|
|
||||||
# les coefs sont ignorés
|
|
||||||
# notes de 0 à 5
|
|
||||||
points = sum([x for x in notes_sport])
|
|
||||||
factor = points / 100.0
|
|
||||||
bonus = infos["moy"] * factor
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutBordeaux1(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Bordeaux 1, sur moyenne générale et UE
|
|
||||||
|
|
||||||
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.
|
|
||||||
En cas de double activité, c'est la meilleure des 2 notes qui compte.
|
|
||||||
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 : le % = points>moyenne / 2
|
|
||||||
Par exemple : sport 13/20 : chaque UE sera multipliée par 1+0,015, ainsi que la moyenne générale.
|
|
||||||
|
|
||||||
Calcul ici du bonus sur moyenne générale et moyennes d'UE non capitalisées.
|
|
||||||
"""
|
|
||||||
# open('/tmp/log','a').write( '\n---------------\n' + pprint.pformat(infos) + '\n' )
|
|
||||||
# les coefs sont ignorés
|
|
||||||
# on récupère la note maximum et les points au-dessus de la moyenne
|
|
||||||
sport = max(notes_sport)
|
|
||||||
points = max(0, sport - 10)
|
|
||||||
# on calcule le bonus
|
|
||||||
factor = (points / 2.0) / 100.0
|
|
||||||
bonus = infos["moy"] * factor
|
|
||||||
# Modifie les moyennes de toutes les UE:
|
|
||||||
for ue_id in infos["moy_ues"]:
|
|
||||||
ue_status = infos["moy_ues"][ue_id]
|
|
||||||
if ue_status["sum_coefs"] > 0:
|
|
||||||
# modifie moyenne UE ds semestre courant
|
|
||||||
ue_status["cur_moy_ue"] = ue_status["cur_moy_ue"] * (1.0 + factor)
|
|
||||||
if not ue_status["is_capitalized"]:
|
|
||||||
# si non capitalisee, modifie moyenne prise en compte
|
|
||||||
ue_status["moy"] = ue_status["cur_moy_ue"]
|
|
||||||
|
|
||||||
# open('/tmp/log','a').write( pprint.pformat(ue_status) + '\n\n' )
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iuto(notes_sport, coefs, infos=None): # OBSOLETE => EN ATTENTE (27/01/2022)
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), règle IUT Orleans
|
|
||||||
* Avant aout 2013
|
|
||||||
Un bonus de 2,5% de la note de sport est accordé à chaque UE sauf
|
|
||||||
les UE de Projet et Stages
|
|
||||||
* Après aout 2013
|
|
||||||
Un bonus de 2,5% de la note de sport est accordé à la moyenne générale
|
|
||||||
"""
|
|
||||||
sumc = sum(coefs) # assumes sum. coefs > 0
|
|
||||||
note_sport = sum(map(mul, notes_sport, coefs)) / sumc # moyenne pondérée
|
|
||||||
bonus = note_sport * 2.5 / 100
|
|
||||||
if (
|
|
||||||
infos["sem"]["date_debut_iso"] > "2013-08-01"
|
|
||||||
): # changement de regle en aout 2013.
|
|
||||||
return bonus
|
|
||||||
coefs = 0.0
|
|
||||||
coefs_total = 0.0
|
|
||||||
for ue_id in infos["moy_ues"]:
|
|
||||||
ue_status = infos["moy_ues"][ue_id]
|
|
||||||
coefs_total = coefs_total + ue_status["sum_coefs"]
|
|
||||||
# Extremement spécifique (et n'est plus utilisé)
|
|
||||||
if ue_status["ue"]["ue_code"] not in {
|
|
||||||
"ORA14",
|
|
||||||
"ORA24",
|
|
||||||
"ORA34",
|
|
||||||
"ORA44",
|
|
||||||
"ORB34",
|
|
||||||
"ORB44",
|
|
||||||
"ORD42",
|
|
||||||
"ORE14",
|
|
||||||
"ORE25",
|
|
||||||
"ORN44",
|
|
||||||
"ORO44",
|
|
||||||
"ORP44",
|
|
||||||
"ORV34",
|
|
||||||
"ORV42",
|
|
||||||
"ORV43",
|
|
||||||
}:
|
|
||||||
if ue_status["sum_coefs"] > 0:
|
|
||||||
coefs = coefs + ue_status["sum_coefs"]
|
|
||||||
# modifie moyenne UE ds semestre courant
|
|
||||||
ue_status["cur_moy_ue"] = ue_status["cur_moy_ue"] + bonus
|
|
||||||
if not ue_status["is_capitalized"]:
|
|
||||||
# si non capitalisee, modifie moyenne prise en compte
|
|
||||||
ue_status["moy"] = ue_status["cur_moy_ue"]
|
|
||||||
return bonus * coefs / coefs_total
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutbethune(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport), règle IUT Bethune
|
|
||||||
|
|
||||||
Les points au dessus de la moyenne de 10 apportent un bonus pour le semestre.
|
|
||||||
Ce bonus est égal au nombre de points divisé par 200 et multiplié par la
|
|
||||||
moyenne générale du semestre de l'étudiant.
|
|
||||||
"""
|
|
||||||
# les coefs sont ignorés
|
|
||||||
points = sum([x - 10 for x in notes_sport if x > 10])
|
|
||||||
points = min(10, points) # limite total à 10
|
|
||||||
bonus = int(infos["moy"] * points / 2) / 100.0 # moyenne-semestre x points x 0,5%
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutbeziers(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), regle IUT BEZIERS
|
|
||||||
|
|
||||||
Les étudiants de l'IUT peuvent suivre des enseignements optionnels
|
|
||||||
sport , etc) non rattaches à une unité d'enseignement. Les points
|
|
||||||
au-dessus de 10 sur 20 obtenus dans chacune des matières
|
|
||||||
optionnelles sont cumulés et 3% de ces points cumulés s'ajoutent à
|
|
||||||
la moyenne générale du semestre déjà obtenue par l'étudiant.
|
|
||||||
"""
|
|
||||||
sumc = sum(coefs) # assumes sum. coefs > 0
|
|
||||||
# note_sport = sum(map(mul, notes_sport, coefs)) / sumc # moyenne pondérée
|
|
||||||
bonus = sum([(x - 10) * 0.03 for x in notes_sport if x > 10])
|
|
||||||
# le total du bonus ne doit pas dépasser 0.3 - Fred, 28/01/2020
|
|
||||||
|
|
||||||
if bonus > 0.3:
|
|
||||||
bonus = 0.3
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutlemans(notes_sport, coefs, infos=None):
|
|
||||||
"fake: formule inutilisée en ScoDoc 9.2 mais doiut être présente"
|
|
||||||
return 0.0
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_iutlr(notes_sport, coefs, infos=None):
|
|
||||||
"""Calcul bonus modules optionels (sport, culture), règle IUT La Rochelle
|
|
||||||
Si la note de sport est comprise entre 0 et 10 : pas d'ajout de point
|
|
||||||
Si la note de sport est comprise entre 10.1 et 20 : ajout de 1% de cette note sur la moyenne générale du semestre
|
|
||||||
"""
|
|
||||||
# les coefs sont ignorés
|
|
||||||
# une seule note
|
|
||||||
note_sport = notes_sport[0]
|
|
||||||
if note_sport <= 10:
|
|
||||||
return 0
|
|
||||||
bonus = note_sport * 0.01 # 1%
|
|
||||||
return bonus
|
|
||||||
|
|
||||||
|
|
||||||
def bonus_demo(notes_sport, coefs, infos=None):
|
|
||||||
"""Fausse fonction "bonus" pour afficher les informations disponibles
|
|
||||||
et aider les développeurs.
|
|
||||||
Les informations sont placées dans le fichier /tmp/scodoc_bonus.log
|
|
||||||
qui est ECRASE à chaque appel.
|
|
||||||
*** Ne pas utiliser en production !!! ***
|
|
||||||
"""
|
|
||||||
with open("/tmp/scodoc_bonus.log", "w") as f: # mettre 'a' pour ajouter en fin
|
|
||||||
f.write("\n---------------\n" + pprint.pformat(infos) + "\n")
|
|
||||||
# Statut de chaque UE
|
|
||||||
# for ue_id in infos['moy_ues']:
|
|
||||||
# ue_status = infos['moy_ues'][ue_id]
|
|
||||||
# #open('/tmp/log','a').write( pprint.pformat(ue_status) + '\n\n' )
|
|
||||||
|
|
||||||
return 0.0
|
|
@ -1,13 +1,11 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""Configuration de ScoDoc (version ScoDOc 9)
|
"""Configuration de ScoDoc (version ScoDoc 9)
|
||||||
NE PAS MODIFIER localement ce fichier !
|
NE PAS MODIFIER localement ce fichier !
|
||||||
mais éditer /opt/scodoc-data/config/scodoc_local.py
|
mais éditer /opt/scodoc-data/config/scodoc_local.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from app.scodoc import bonus_sport
|
|
||||||
|
|
||||||
|
|
||||||
class AttrDict(dict):
|
class AttrDict(dict):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
Loading…
Reference in New Issue
Block a user