Merge branch 'master' of https://scodoc.org/git/viennet/ScoDoc into dev93

This commit is contained in:
Emmanuel Viennet 2022-06-02 11:54:26 +02:00
commit 5f9a916135
4 changed files with 58 additions and 39 deletions

View File

@ -266,6 +266,8 @@ class BonusSportMultiplicatif(BonusSport):
amplitude = 0.005 # multiplie les points au dessus du seuil
# En classique, les bonus multiplicatifs agissent par défaut sur les UE:
classic_use_bonus_ues = True
# Facteur multiplicatif max: (bonus = moy_ue*factor)
factor_max = 1000.0 # infini
# C'est un bonus "multiplicatif": on l'exprime en additif,
# sur chaque moyenne d'UE m_0
@ -285,6 +287,8 @@ class BonusSportMultiplicatif(BonusSport):
notes = np.nan_to_num(notes, copy=False)
factor = (notes - self.seuil_moy_gen) * self.amplitude # 5% si note=20
factor[factor <= 0] = 0.0 # note < seuil_moy_gen, pas de bonus
# note < seuil_moy_gen, pas de bonus: pas de facteur négatif, ni
factor.clip(0.0, self.factor_max, out=factor)
# Ne s'applique qu'aux moyennes d'UE
if len(factor.shape) == 1: # classic
@ -705,10 +709,11 @@ class BonusGrenobleIUT1(BonusSportMultiplicatif):
class BonusIUTRennes1(BonusSportAdditif):
"""Calcul bonus optionnels (sport, langue vivante, engagement étudiant),
règle IUT de l'Université de Rennes 1 (Lannion, St Malo).
règle IUT de l'Université de Rennes 1 (Lannion, Rennes, St Brieuc, St Malo).
<ul>
<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
dans les semestres pairs.<br>
La meilleure des notes obtenue est prise en compte, si elle est supérieure à 10/20.
</li>
<li>Le vingtième des points au dessus de 10 est ajouté à la moyenne de chaque UE
@ -749,6 +754,19 @@ class BonusIUTRennes1(BonusSportAdditif):
self.bonus_additif(bonus_moy_arr)
# juste pour compatibilité (nom bonus en base):
class BonusStBrieuc(BonusIUTRennes1):
name = "bonus_iut_stbrieuc"
displayed_name = "IUTs de Rennes 1/St-Brieuc"
__doc__ = BonusIUTRennes1.__doc__
class BonusStMalo(BonusIUTRennes1):
name = "bonus_iut_stmalo"
displayed_name = "IUTs de Rennes 1/St-Malo"
__doc__ = BonusIUTRennes1.__doc__
class BonusLaRochelle(BonusSportAdditif):
"""Calcul bonus modules optionnels (sport, culture), règle IUT de La Rochelle.
@ -967,7 +985,7 @@ class BonusNantes(BonusSportAdditif):
class BonusPoitiers(BonusSportAdditif):
"""Calcul bonus optionnels (sport, culture), règle IUT de Poitiers.
Les deux notes d'option supérieure à 10, bonifies les moyennes de chaque UE.
Les deux notes d'option supérieure à 10, bonifient les moyennes de chaque UE.
bonus = (option1 - 10)*5% + (option2 - 10)*5%
"""
@ -992,27 +1010,6 @@ class BonusRoanne(BonusSportAdditif):
proportion_point = 1
class BonusStBrieuc(BonusSportAdditif):
"""IUT de Saint Brieuc
Ne s'applique qu'aux semestres pairs (S2, S4, S6), et bonifie les moyennes d'UE:
<ul>
<li>Bonus = (S - 10)/20</li>
</ul>
"""
# Utilisé aussi par St Malo, voir plus bas
name = "bonus_iut_stbrieuc"
displayed_name = "IUT de Saint-Brieuc"
proportion_point = 1 / 20.0
classic_use_bonus_ues = False
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
"""calcul du bonus"""
if self.formsemestre.semestre_id % 2 == 0:
super().compute_bonus(sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan)
class BonusStEtienne(BonusSportAdditif):
"""IUT de Saint-Etienne.
@ -1043,17 +1040,31 @@ class BonusStDenis(BonusSportAdditif):
bonus_max = 0.5
class BonusStMalo(BonusStBrieuc):
# identique à St Brieux, sauf la doc
"""IUT de Saint Malo
class BonusStNazaire(BonusSportMultiplicatif):
"""IUT de Saint-Nazaire
Ne s'applique qu'aux semestres pairs (S2, S4, S6), et bonifie les moyennes d'UE:
Trois bonifications sont possibles : sport, culture et engagement citoyen
(qui seront déclarées comme des modules séparés de l'UE bonus).
<ul>
<li>Bonus = (S - 10)/20</li>
<li>Chaque bonus est compris entre 0 et 20 points -> 4pt = 1%<br>
(note 4/20: 1%, 8/20: 2%, 12/20: 3%, 16/20: 4%, 20/20: 5%)
</li>
<li>Le total des 3 bonus ne peut excéder 10%</li>
<li>La somme des bonus s'applique à la moyenne de chaque UE</li>
</ul>
<p>Exemple: une moyenne d'UE de 10/20 avec un total des bonus de 6% donne
une moyenne de 10,6.</p>
<p>Les bonifications s'appliquent aussi au classement général du semestre
et de l'année.
</p>
"""
name = "bonus_iut_stmalo"
displayed_name = "IUT de Saint-Malo"
name = "bonus_iutSN"
displayed_name = "IUT de Saint-Nazaire"
classic_use_bonus_ues = True # s'applique aux UEs en DUT et LP
seuil_moy_gen = 0.0 # tous les points comptent
amplitude = 0.01 / 4 # 4pt => 1%
factor_max = 0.1 # 10% max
class BonusTarbes(BonusSportAdditif):

View File

@ -606,12 +606,10 @@ def formsemestre_evaluations_delai_correction(formsemestre_id, format="html"):
# -------------- VIEWS
def evaluation_describe(evaluation_id="", edit_in_place=True):
def evaluation_describe(evaluation_id="", edit_in_place=True, link_saisie=True):
"""HTML description of evaluation, for page headers
edit_in_place: allow in-place editing when permitted (not implemented)
"""
from app.scodoc import sco_saisie_notes
E = sco_evaluation_db.do_evaluation_list({"evaluation_id": evaluation_id})[0]
moduleimpl_id = E["moduleimpl_id"]
M = sco_moduleimpl.moduleimpl_list(moduleimpl_id=moduleimpl_id)[0]
@ -646,7 +644,7 @@ def evaluation_describe(evaluation_id="", edit_in_place=True):
if Mod["module_type"] == ModuleType.MALUS:
etit += ' <span class="eval_malus">(points de malus)</span>'
H = [
'<span class="eval_title">Evaluation%s</span><p><b>Module : %s</b></p>'
'<span class="eval_title">Évaluation%s</span><p><b>Module : %s</b></p>'
% (etit, mod_descr)
]
if Mod["module_type"] == ModuleType.MALUS:
@ -689,7 +687,11 @@ def evaluation_describe(evaluation_id="", edit_in_place=True):
<a class="stdlink" href="{url_for(
"notes.evaluation_edit", scodoc_dept=g.scodoc_dept, evaluation_id=evaluation_id)
}">modifier l'évaluation</a>
"""
)
if link_saisie:
H.append(
f"""
<a class="stdlink" href="{url_for(
"notes.saisie_notes", scodoc_dept=g.scodoc_dept, evaluation_id=evaluation_id)
}">saisie des notes</a>

View File

@ -277,7 +277,11 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None):
if modimpl.module.is_apc():
H.append(_ue_coefs_html(modimpl.module.ue_coefs_list()))
else:
H.append(f"Coef. dans le semestre: {modimpl.module.coefficient}")
H.append(
f"""Coef. dans le semestre: {
"non défini" if modimpl.module.coefficient is None else modimpl.module.coefficient
}"""
)
H.append("""</td><td></td></tr>""")
# 3ieme ligne: Formation
H.append(

View File

@ -943,7 +943,9 @@ def saisie_notes(evaluation_id, group_ids=[]):
cssstyles=sco_groups_view.CSSSTYLES,
init_qtip=True,
),
sco_evaluations.evaluation_describe(evaluation_id=evaluation_id),
sco_evaluations.evaluation_describe(
evaluation_id=evaluation_id, link_saisie=False
),
'<div id="saisie_notes"><span class="eval_title">Saisie des notes</span>',
]
H.append("""<div id="group-tabs"><table><tr><td>""")