1
0
forked from ScoDoc/ScoDoc

Enhanced tests + some code cleaning

This commit is contained in:
IDK 2021-01-28 23:02:18 +01:00
parent f9c2eb0e94
commit 73cabb0039
5 changed files with 64 additions and 22 deletions

View File

@ -34,10 +34,7 @@
import time, string, glob, re, inspect
import urllib, urllib2, cgi, xml
try:
from cStringIO import StringIO
except:
from StringIO import StringIO
from cStringIO import StringIO
from zipfile import ZipFile
import os.path, glob
import traceback
@ -48,9 +45,8 @@ from email.MIMEBase import MIMEBase
from email.Header import Header
from email import Encoders
from sco_zope import *
from sco_zope import * # pylint: disable=unused-wildcard-import
#
try:
import Products.ZPsycopgDA.DA as ZopeDA
except:

View File

@ -87,7 +87,8 @@ import ZNotes
import ZAbsences
import ZEntreprises
import ZScoUsers
import sco_modalites
# import sco_modalites
import ImportScolars
import sco_abs
import sco_portal_apogee

View File

@ -33,8 +33,8 @@ Elle n'est pas utilisée pour les parcours, ni pour rien d'autre
(c'est donc un attribut "cosmétique").
"""
from notesdb import *
from sco_utils import *
import notesdb as ndb
import sco_utils as scu
from notes_log import log
from TrivialFormulator import TrivialFormulator, TF
import sco_codes_parcours
@ -56,7 +56,7 @@ def group_sems_by_modalite(context, sems):
"""Given the list of fromsemestre, group them by modalite,
sorted in each one by semestre id and date
"""
sems_by_mod = DictDefault(defaultvalue=[])
sems_by_mod = scu.DictDefault(defaultvalue=[])
modalites = list_formsemestres_modalites(context, sems)
for modalite in modalites:
for sem in sems:
@ -75,12 +75,12 @@ def group_sems_by_modalite(context, sems):
# ------ Low level interface (database) ------
_modaliteEditor = EditableTable(
_modaliteEditor = ndb.EditableTable(
"notes_form_modalites",
"form_modalite_id",
("form_modalite_id", "modalite", "titre", "numero"),
sortkey="numero",
output_formators={"numero": int_null_is_zero},
output_formators={"numero": ndb.int_null_is_zero},
)
@ -90,23 +90,23 @@ def do_modalite_list(context, *args, **kw):
return _modaliteEditor.list(cnx, *args, **kw)
def do_modalite_create(context, args, REQUEST):
def do_modalite_create(context, args, REQUEST=None):
"create a modalite"
cnx = self.GetDBConnexion()
cnx = context.GetDBConnexion()
r = _modaliteEditor.create(cnx, args)
return r
def do_modalite_delete(context, oid, REQUEST=None):
"delete a modalite"
cnx = self.GetDBConnexion()
cnx = context.GetDBConnexion()
log("do_modalite_delete: form_modalite_id=%s" % oid)
_modaliteEditor.delete(cnx, oid)
def do_modalite_edit(context, *args, **kw):
"edit a modalite"
cnx = self.GetDBConnexion()
cnx = context.GetDBConnexion()
# check
m = do_modalite_list(context, {"form_modalite_id": args[0]["form_modalite_id"]})[0]
_modaliteEditor.edit(cnx, *args, **kw)

View File

@ -132,7 +132,7 @@ class ScoFake:
code_specialite=None,
):
"""Crée une formation"""
if acronyme == "":
if not acronyme:
acronyme = "TEST" + str(random.randint(100000, 999999))
oid = self.context.do_formation_create(locals(), REQUEST=REQUEST)
oids = self.context.formation_list(args={"formation_id": oid})
@ -295,7 +295,14 @@ class ScoFake:
comment=comment,
)
def setup_formation(self, nb_semestre=1, nb_ue_per_semestre=2, nb_module_per_ue=2):
def setup_formation(
self,
nb_semestre=1,
nb_ue_per_semestre=2,
nb_module_per_ue=2,
acronyme=None,
titre=None,
):
"""Création d'une formation, avec UE, modules et évaluations.
Formation avec `nb_semestre` comportant chacun `nb_ue_per_semestre` UE
@ -304,7 +311,7 @@ class ScoFake:
Returns:
formation (dict), liste d'ue (dicts), liste de modules.
"""
f = self.create_formation(acronyme="")
f = self.create_formation(acronyme=acronyme, titre=titre)
ue_list = []
mod_list = []
for semestre_id in range(1, nb_semestre + 1):
@ -337,6 +344,9 @@ class ScoFake:
date_debut="01/01/2020",
date_fin="30/06/2020",
nb_evaluations_per_module=1,
titre=None,
responsables=["bach"],
modalite=None,
):
"""Création semestre, avec modules et évaluations."""
sem = self.create_formsemestre(
@ -344,6 +354,9 @@ class ScoFake:
semestre_id=semestre_id,
date_debut=date_debut,
date_fin=date_fin,
titre=titre,
responsables=responsables,
modalite=modalite,
)
eval_list = []
for mod in mod_list:

View File

@ -14,6 +14,7 @@ Utiliser comme:
import scotests.sco_fake_gen as sco_fake_gen # pylint: disable=import-error
import sco_utils
import sco_codes_parcours
import sco_modalites
G = sco_fake_gen.ScoFake(context.Notes) # pylint: disable=undefined-variable
G.verbose = False
@ -21,8 +22,29 @@ G.verbose = False
# --- Création d'étudiants
etuds = [G.create_etud(code_nip=None) for _ in range(10)]
# Deux modalités
# sco_modalites.do_modalite_create(context, {})
# --- Mise en place formation 4 semestres
f, ue_list, mod_list = G.setup_formation(nb_semestre=4)
form_dut, ue_list, mod_list = G.setup_formation(
nb_semestre=4, titre="DUT RT", acronyme="DUT-RT"
)
# --- et une formation LP en 2 semestres
form_lp, ue_list_lp, mod_list_lp = G.setup_formation(
nb_semestre=2, titre="Licence Pro Ingéniérie Pédagogique", acronyme="LP IP"
)
# et un semestre que l'on ne va pas utiliser ici:
_, _ = G.setup_formsemestre(
form_lp,
mod_list_lp,
semestre_id=1,
date_debut="01/09/2021",
date_fin="15/01/2022",
titre="Licence Pro Ingéniérie Pédagogique",
responsables=["callas"],
modalite="FAP",
)
# --- Crée les 4 semestres et affecte des notes aléatoires
sems, evals = [], []
@ -33,7 +55,12 @@ for semestre_id, date_debut, date_fin in [
(4, "16/01/2021", "30/06/2021"),
]:
sem, eval_list = G.setup_formsemestre(
f, mod_list, semestre_id=semestre_id, date_debut=date_debut, date_fin=date_fin
form_dut,
mod_list,
semestre_id=semestre_id,
date_debut=date_debut,
date_fin=date_fin,
titre="BUT Réseaux et Tests",
)
sems.append(sem)
evals.append(eval_list) # liste des listes d'evaluations
@ -55,7 +82,12 @@ for semestre_id, date_debut, date_fin in [
(4, "16/01/2023", "30/06/2023"),
]:
sem, eval_list = G.setup_formsemestre(
f, mod_list, semestre_id=semestre_id, date_debut=date_debut, date_fin=date_fin
form_dut,
mod_list,
semestre_id=semestre_id,
date_debut=date_debut,
date_fin=date_fin,
titre="BUT Réseaux et Tests",
)
sems.append(sem)
evals.append(eval_list) # liste des listes d'evaluations