forked from ScoDoc/ScoDoc
Fix: notes a prise en compte immédiate. + tests de ces cas.
This commit is contained in:
parent
d27b8d127d
commit
61ff72082f
@ -235,13 +235,16 @@ def do_evaluation_etat(
|
|||||||
else:
|
else:
|
||||||
complete = True
|
complete = True
|
||||||
if (
|
if (
|
||||||
TotalNbAtt > 0
|
TotalNbMissing > 0
|
||||||
and (TotalNbMissing == TotalNbAtt or E["publish_incomplete"] != "0")
|
and (TotalNbMissing == TotalNbAtt or E["publish_incomplete"] != "0")
|
||||||
and not is_malus
|
and not is_malus
|
||||||
):
|
):
|
||||||
evalattente = True
|
evalattente = True
|
||||||
else:
|
else:
|
||||||
evalattente = False
|
evalattente = False
|
||||||
|
# mais ne met pas en attente les evals immediates sans aucune notes:
|
||||||
|
if E["publish_incomplete"] != "0" and nb_notes == 0:
|
||||||
|
evalattente = False
|
||||||
|
|
||||||
# Calcul moyenne dans chaque groupe de TD
|
# Calcul moyenne dans chaque groupe de TD
|
||||||
gr_moyennes = [] # group : {moy,median, nb_notes}
|
gr_moyennes = [] # group : {moy,median, nb_notes}
|
||||||
@ -265,11 +268,6 @@ def do_evaluation_etat(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
gr_moyennes.sort(key=operator.itemgetter("group_name"))
|
gr_moyennes.sort(key=operator.itemgetter("group_name"))
|
||||||
# log('gr_moyennes=%s' % gr_moyennes)
|
|
||||||
# _DEE_TOT += (time.time() - t0)
|
|
||||||
# log('%s\t_DEE_TOT=%f' % (evaluation_id, _DEE_TOT))
|
|
||||||
# if evaluation_id == 'GEAEVAL82883':
|
|
||||||
# logCallStack()
|
|
||||||
|
|
||||||
# retourne mapping
|
# retourne mapping
|
||||||
return {
|
return {
|
||||||
|
@ -19,6 +19,8 @@ import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
|||||||
import sco_utils
|
import sco_utils
|
||||||
import sco_abs
|
import sco_abs
|
||||||
import sco_abs_views
|
import sco_abs_views
|
||||||
|
import sco_bulletins
|
||||||
|
import sco_evaluations
|
||||||
|
|
||||||
G = sco_fake_gen.ScoFake(context.Notes)
|
G = sco_fake_gen.ScoFake(context.Notes)
|
||||||
G.verbose = False
|
G.verbose = False
|
||||||
@ -65,12 +67,65 @@ e = G.create_evaluation(
|
|||||||
coefficient=1.0,
|
coefficient=1.0,
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- Saisie notes
|
# --- Saisie toutes les notes de l'évaluation
|
||||||
for etud in etuds:
|
for etud in etuds:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
evaluation=e, etud=etud, note=float(random.randint(0, 20))
|
evaluation=e, etud=etud, note=float(random.randint(0, 20))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# --- Vérifie que les notes sont prises en compte:
|
||||||
|
b = sco_bulletins.formsemestre_bulletinetud_dict(
|
||||||
|
context.Notes, sem["formsemestre_id"], etud["etudid"], REQUEST=REQUEST
|
||||||
|
)
|
||||||
|
# Toute les notes sont saisies, donc eval complète
|
||||||
|
etat = sco_evaluations.do_evaluation_etat(context.Notes, e["evaluation_id"])
|
||||||
|
assert etat["evalcomplete"]
|
||||||
|
# Un seul module, donc moy gen == note module
|
||||||
|
assert b["ues"][0]["cur_moy_ue_txt"] == b["ues"][0]["modules"][0]["mod_moy_txt"]
|
||||||
|
# Note au module égale à celle de l'éval
|
||||||
|
assert (
|
||||||
|
b["ues"][0]["modules"][0]["mod_moy_txt"]
|
||||||
|
== b["ues"][0]["modules"][0]["evaluations"][0]["note_txt"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# --- Une autre évaluation
|
||||||
|
e2 = G.create_evaluation(
|
||||||
|
moduleimpl_id=mi["moduleimpl_id"],
|
||||||
|
jour="02/01/2020",
|
||||||
|
description="evaluation test 2",
|
||||||
|
coefficient=1.0,
|
||||||
|
)
|
||||||
|
# Saisie les notes des 5 premiers étudiants:
|
||||||
|
for etud in etuds[:5]:
|
||||||
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
|
evaluation=e2, etud=etud, note=float(random.randint(0, 20))
|
||||||
|
)
|
||||||
|
# Cette éval n'est pas complète
|
||||||
|
etat = sco_evaluations.do_evaluation_etat(context.Notes, e2["evaluation_id"])
|
||||||
|
assert etat["evalcomplete"] == False
|
||||||
|
# la première éval est toujours complète:
|
||||||
|
etat = sco_evaluations.do_evaluation_etat(context.Notes, e["evaluation_id"])
|
||||||
|
assert etat["evalcomplete"]
|
||||||
|
|
||||||
|
# Modifie l'évaluation 2 pour "prise en compte immédiate"
|
||||||
|
e2["publish_incomplete"] = "1"
|
||||||
|
context.Notes.do_evaluation_edit(REQUEST, e2)
|
||||||
|
etat = sco_evaluations.do_evaluation_etat(context.Notes, e2["evaluation_id"])
|
||||||
|
assert etat["evalcomplete"] == False
|
||||||
|
assert etat["nb_att"] == 0 # il n'y a pas de notes (explicitement) en attente
|
||||||
|
assert etat["evalattente"] # mais l'eval est en attente (prise en compte immédiate)
|
||||||
|
|
||||||
|
# Saisie des notes qui manquent:
|
||||||
|
for etud in etuds[5:]:
|
||||||
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
|
evaluation=e2, etud=etud, note=float(random.randint(0, 20))
|
||||||
|
)
|
||||||
|
etat = sco_evaluations.do_evaluation_etat(context.Notes, e2["evaluation_id"])
|
||||||
|
assert etat["evalcomplete"]
|
||||||
|
assert etat["nb_att"] == 0
|
||||||
|
assert not etat["evalattente"] # toutes les notes sont présentes
|
||||||
|
|
||||||
# --- Saisie absences
|
# --- Saisie absences
|
||||||
etudid = etuds[0]["etudid"]
|
etudid = etuds[0]["etudid"]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user