forked from ScoDoc/DocScoDoc
102 lines
2.7 KiB
Python
102 lines
2.7 KiB
Python
# -*- mode: python -*-
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""Test inscriptions / demissions / affichages notes
|
|
|
|
- Création 2 étudiants, puis formation en 1 semestre.
|
|
- Saisie de 2 notes
|
|
- Demission d'un étudiant
|
|
- bulletins
|
|
|
|
Utiliser comme:
|
|
scotests/scointeractive.sh -r TEST00 scotests/test_demissions.py
|
|
|
|
"""
|
|
import datetime
|
|
import re
|
|
import json
|
|
|
|
# La variable context est définie par le script de lancement
|
|
# l'affecte ainsi pour évietr les warnins pylint:
|
|
context = context # pylint: disable=undefined-variable
|
|
REQUEST = REQUEST # pylint: disable=undefined-variable
|
|
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
|
|
import sco_utils
|
|
import sco_bulletins
|
|
|
|
G = sco_fake_gen.ScoFake(context.Notes)
|
|
G.verbose = False
|
|
|
|
nb_etuds = 10
|
|
# --- Création d'étudiants
|
|
etuds = [G.create_etud(code_nip=None) for _ in range(nb_etuds)]
|
|
# --- Mise en place formation
|
|
form, ue_list, mod_list = G.setup_formation(
|
|
nb_semestre=1, titre="Essai 1", acronyme="ESS01"
|
|
)
|
|
# Mise en place semestre
|
|
sem, eval_list = G.setup_formsemestre(
|
|
form,
|
|
mod_list,
|
|
semestre_id=1,
|
|
date_debut="01/01/2021",
|
|
date_fin="31/12/2021",
|
|
titre="Essai démissions",
|
|
)
|
|
# Inscriptions
|
|
for etud in etuds:
|
|
G.inscrit_etudiant(sem, etud)
|
|
# Notes
|
|
G.set_etud_notes_sem(sem, eval_list, etuds)
|
|
|
|
# Bulletins
|
|
bul = sco_bulletins.formsemestre_bulletinetud_dict(
|
|
context.Notes, sem["formsemestre_id"], etuds[0]["etudid"]
|
|
)
|
|
print(bul["moy_gen"])
|
|
assert bul["ins"][0]["etat"] == "I"
|
|
|
|
# Démission:
|
|
context.doDemEtudiant(
|
|
etuds[0]["etudid"], sem["formsemestre_id"], event_date="15/12/2021"
|
|
)
|
|
bul = sco_bulletins.formsemestre_bulletinetud_dict(
|
|
context.Notes, sem["formsemestre_id"], etuds[0]["etudid"]
|
|
)
|
|
print(bul["moy_gen"])
|
|
|
|
assert bul["moy_gen"] == "NA"
|
|
assert bul["ins"][0]["etat"] == "D"
|
|
|
|
# ------------ Billets d'absences
|
|
etud = etuds[1] # non demissionnaire
|
|
d = sem["date_debut_iso"]
|
|
d_beg = datetime.datetime(*[int(x) for x in d.split("-")])
|
|
d_end = d_beg + datetime.timedelta(2)
|
|
description = "billet test 0"
|
|
x = context.Absences.AddBilletAbsence(
|
|
d_beg.isoformat(),
|
|
d_end.isoformat(),
|
|
description=description,
|
|
etudid=etud["etudid"],
|
|
REQUEST=REQUEST,
|
|
)
|
|
#
|
|
billet_id = re.search(r"billet_id value=\"([A-Z0-9]+)\"", x).group(1)
|
|
context.Absences.deleteBilletAbsence(billet_id, REQUEST=REQUEST, dialog_confirmed=True)
|
|
j = context.Absences.listeBilletsEtud(
|
|
etudid=etud["etudid"], REQUEST=REQUEST, format="json"
|
|
)
|
|
assert len(json.loads(j)) == 0
|
|
x = context.Absences.AddBilletAbsence(
|
|
d_beg.isoformat(),
|
|
d_end.isoformat(),
|
|
description=description,
|
|
etudid=etud["etudid"],
|
|
REQUEST=REQUEST,
|
|
)
|
|
j = context.Absences.listeBilletsEtud(
|
|
etudid=etud["etudid"], REQUEST=REQUEST, format="json"
|
|
)
|
|
assert json.loads(j)[0]["description"] == description
|