From 73cabb0039495e5aa9f297633e9ad1bcd0388a0c Mon Sep 17 00:00:00 2001 From: IDK Date: Thu, 28 Jan 2021 23:02:18 +0100 Subject: [PATCH] Enhanced tests + some code cleaning --- ZScoDoc.py | 8 ++----- ZScolar.py | 3 ++- sco_modalites.py | 18 ++++++++-------- scotests/sco_fake_gen.py | 19 ++++++++++++++--- scotests/test_capitalisation.py | 38 ++++++++++++++++++++++++++++++--- 5 files changed, 64 insertions(+), 22 deletions(-) diff --git a/ZScoDoc.py b/ZScoDoc.py index 4b567877..4dad4ba3 100644 --- a/ZScoDoc.py +++ b/ZScoDoc.py @@ -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: diff --git a/ZScolar.py b/ZScolar.py index 683fa7eb..71414d48 100644 --- a/ZScolar.py +++ b/ZScolar.py @@ -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 diff --git a/sco_modalites.py b/sco_modalites.py index fb9dcf7a..396184c6 100644 --- a/sco_modalites.py +++ b/sco_modalites.py @@ -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) diff --git a/scotests/sco_fake_gen.py b/scotests/sco_fake_gen.py index 9caaaa77..2a066de0 100644 --- a/scotests/sco_fake_gen.py +++ b/scotests/sco_fake_gen.py @@ -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: diff --git a/scotests/test_capitalisation.py b/scotests/test_capitalisation.py index 31c67c32..cd2a2280 100644 --- a/scotests/test_capitalisation.py +++ b/scotests/test_capitalisation.py @@ -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