# -*- 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