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