forked from ScoDoc/ScoDoc
Evaluations de deuxième session (pour Masters)
This commit is contained in:
parent
61ff72082f
commit
c5fe6ca674
@ -8,13 +8,14 @@ SCONAME = "ScoDoc"
|
||||
SCONEWS = """
|
||||
<h4>Année 2021</h4>
|
||||
<ul>
|
||||
<li>Évaluations de type "deuxième session"</li>
|
||||
<li>Gestion du genre neutre (pas d'affichage de la civilité)</li>
|
||||
<li>Diverses corrections (PV de jurys, ...)</li>
|
||||
<li>Modernisation du code Python</li>
|
||||
</ul>
|
||||
<h4>Année 2020</h4>
|
||||
<ul>
|
||||
<li>Corrections d'erreurs, améliorations saise absences< et affichage bulletins</li>
|
||||
<li>Corrections d'erreurs, améliorations saisie absences et affichage bulletins</li>
|
||||
<li>Nouveau site <a href="https://scodoc.org">scodoc.org</a> pour la documentation</li>
|
||||
<li>Enregistrement de semestres extérieurs</li>
|
||||
<li>Améliorations PV de Jury</li>
|
||||
|
@ -548,6 +548,8 @@ def _ue_mod_bulletin(context, etudid, formsemestre_id, ue_id, modimpls, nt, vers
|
||||
e["coef_txt"] = scu.fmt_coef(e["coefficient"])
|
||||
if e["evaluation_type"] == scu.EVALUATION_RATTRAPAGE:
|
||||
e["coef_txt"] = "rat."
|
||||
elif e["evaluation_type"] == scu.EVALUATION_SESSION2:
|
||||
e["coef_txt"] = "sess. 2"
|
||||
if e["etat"]["evalattente"]:
|
||||
mod_attente = True # une eval en attente dans ce module
|
||||
if (not is_malus) or (val != "NP"):
|
||||
|
@ -38,6 +38,7 @@ from sco_utils import (
|
||||
NOTES_NEUTRALISE,
|
||||
EVALUATION_NORMALE,
|
||||
EVALUATION_RATTRAPAGE,
|
||||
EVALUATION_SESSION2,
|
||||
)
|
||||
from sco_exceptions import ScoException
|
||||
from notesdb import EditableTable, quote_html
|
||||
@ -242,7 +243,10 @@ def do_moduleimpl_moyennes(context, nt, mod):
|
||||
|
||||
if e["etat"]["evalattente"]:
|
||||
attente = True
|
||||
if e["evaluation_type"] == EVALUATION_RATTRAPAGE:
|
||||
if (
|
||||
e["evaluation_type"] == EVALUATION_RATTRAPAGE
|
||||
or e["evaluation_type"] == EVALUATION_SESSION2
|
||||
):
|
||||
if eval_rattr:
|
||||
# !!! plusieurs rattrapages !
|
||||
diag_info.update(
|
||||
@ -344,7 +348,7 @@ def do_moduleimpl_moyennes(context, nt, mod):
|
||||
if diag_info:
|
||||
diag_info["moduleimpl_id"] = moduleimpl_id
|
||||
R[etudid] = user_moy
|
||||
# Note de rattrapage ?
|
||||
# Note de rattrapage ou dexuième session ?
|
||||
if eval_rattr:
|
||||
if eval_rattr["notes"].has_key(etudid):
|
||||
note = eval_rattr["notes"][etudid]["value"]
|
||||
@ -353,8 +357,14 @@ def do_moduleimpl_moyennes(context, nt, mod):
|
||||
R[etudid] = note
|
||||
else:
|
||||
note_sur_20 = note * 20.0 / eval_rattr["note_max"]
|
||||
if note_sur_20 > R[etudid]:
|
||||
# log('note_sur_20=%s' % note_sur_20)
|
||||
if eval_rattr["evaluation_type"] == EVALUATION_RATTRAPAGE:
|
||||
# rattrapage classique: prend la meilleure note entre moyenne
|
||||
# module et note eval rattrapage
|
||||
if note_sur_20 > R[etudid]:
|
||||
# log('note_sur_20=%s' % note_sur_20)
|
||||
R[etudid] = note_sur_20
|
||||
elif eval_rattr["evaluation_type"] == EVALUATION_SESSION2:
|
||||
# rattrapage type "deuxième session": remplace la note moyenne
|
||||
R[etudid] = note_sur_20
|
||||
|
||||
return R, valid_evals, attente, diag_info
|
||||
|
@ -229,6 +229,7 @@ def do_evaluation_etat(
|
||||
if (
|
||||
(TotalNbMissing > 0)
|
||||
and (E["evaluation_type"] != scu.EVALUATION_RATTRAPAGE)
|
||||
and (E["evaluation_type"] != scu.EVALUATION_SESSION2)
|
||||
and not is_malus
|
||||
):
|
||||
complete = False
|
||||
@ -891,12 +892,20 @@ def evaluation_create_form(
|
||||
notes, en sus des moyennes de modules. Attention, cette option n'empêche pas la publication sur
|
||||
les bulletins en version "longue" (la note est donc visible par les étudiants sur le portail).
|
||||
</p><p class="help">
|
||||
La modalité "rattrapage" permet de définir une évaluation dont les notes remplaceront les moyennes du modules
|
||||
si elles sont meilleures que celles calculées. Dans ce cas, le coefficient est ignoré, et toutes les notes n'ont
|
||||
Les modalités "rattrapage" et "deuxième session" définissent des évaluations prises en compte de
|
||||
façon spéciale: </p>
|
||||
<ul>
|
||||
<li>les notes d'une évaluation de "rattrapage" remplaceront les moyennes du module
|
||||
<em>si elles sont meilleures que celles calculées</em>.</li>
|
||||
<li>les notes de "deuxième session" remplacent, lorsqu'elles sont saisies, la moyenne de l'étudiant
|
||||
à ce module, même si la note de deuxième session est plus faible.</li>
|
||||
</ul>
|
||||
<p class="help">
|
||||
Dans ces deux cas, le coefficient est ignoré, et toutes les notes n'ont
|
||||
pas besoin d'être rentrées.
|
||||
</p>
|
||||
<p class="help">
|
||||
Les évaluations des modules de type "malus" sont spéciales: le coefficient n'est pas utilisé.
|
||||
Par ailleurs, les évaluations des modules de type "malus" sont toujours spéciales: le coefficient n'est pas utilisé.
|
||||
Les notes de malus sont toujours comprises entre -20 et 20. Les points sont soustraits à la moyenne
|
||||
de l'UE à laquelle appartient le module malus (si la note est négative, la moyenne est donc augmentée).
|
||||
</p>
|
||||
@ -1019,9 +1028,17 @@ def evaluation_create_form(
|
||||
{
|
||||
"input_type": "menu",
|
||||
"title": "Modalité",
|
||||
"allowed_values": (scu.EVALUATION_NORMALE, scu.EVALUATION_RATTRAPAGE),
|
||||
"allowed_values": (
|
||||
scu.EVALUATION_NORMALE,
|
||||
scu.EVALUATION_RATTRAPAGE,
|
||||
scu.EVALUATION_SESSION2,
|
||||
),
|
||||
"type": "int",
|
||||
"labels": ("Normale", "Rattrapage"),
|
||||
"labels": (
|
||||
"Normale",
|
||||
"Rattrapage (remplace si meilleure note)",
|
||||
"Deuxième session (remplace toujours)",
|
||||
),
|
||||
},
|
||||
),
|
||||
]
|
||||
|
@ -34,6 +34,7 @@ import sco_utils as scu
|
||||
from sco_utils import (
|
||||
EVALUATION_NORMALE,
|
||||
EVALUATION_RATTRAPAGE,
|
||||
EVALUATION_SESSION2,
|
||||
)
|
||||
from sco_permissions import ScoEtudInscrit, ScoAbsChange
|
||||
from notes_log import log
|
||||
@ -341,8 +342,8 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
partition_id=partition_id,
|
||||
select_first_partition=True,
|
||||
)
|
||||
if eval["evaluation_type"] == EVALUATION_RATTRAPAGE:
|
||||
tr_class = "mievr_rattr"
|
||||
if eval["evaluation_type"] in (EVALUATION_RATTRAPAGE, EVALUATION_SESSION2):
|
||||
tr_class = "mievr mievr_rattr"
|
||||
else:
|
||||
tr_class = "mievr"
|
||||
tr_class_1 = "mievr"
|
||||
@ -361,7 +362,13 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
||||
)
|
||||
H.append(" <em>%(description)s</em>" % eval)
|
||||
if eval["evaluation_type"] == EVALUATION_RATTRAPAGE:
|
||||
H.append("""<span class="mievr_rattr">rattrapage</span>""")
|
||||
H.append(
|
||||
"""<span class="mievr_rattr" title="remplace si meilleure note">rattrapage</span>"""
|
||||
)
|
||||
elif eval["evaluation_type"] == EVALUATION_SESSION2:
|
||||
H.append(
|
||||
"""<span class="mievr_rattr" title="remplace autres notes">session 2</span>"""
|
||||
)
|
||||
if etat["last_modif"]:
|
||||
H.append(
|
||||
"""<span class="mievr_lastmodif">(dernière modif le %s)</span>"""
|
||||
|
@ -111,6 +111,7 @@ NOTES_MENTIONS_LABS = (
|
||||
|
||||
EVALUATION_NORMALE = 0
|
||||
EVALUATION_RATTRAPAGE = 1
|
||||
EVALUATION_SESSION2 = 2
|
||||
|
||||
|
||||
def fmt_note(val, note_max=None, keep_numeric=False):
|
||||
|
@ -1261,9 +1261,14 @@ tr.mievr_rattr {
|
||||
background-color:#dddddd;
|
||||
}
|
||||
span.mievr_rattr {
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
color: blue;
|
||||
font-size: 80%;
|
||||
color: white;
|
||||
background-color: orangered;
|
||||
margin-left: 2em;
|
||||
margin-top: 1px;
|
||||
margin-bottom: 2px;;
|
||||
border: 1px solid red;
|
||||
padding: 1px 3px 1px 3px;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user