forked from ScoDoc/ScoDoc
Base test API: charge ref. comp.
This commit is contained in:
parent
0b553a98a4
commit
371b017245
@ -35,7 +35,7 @@ def orebut_import_refcomp(xml_data: str, dept_id: int, orig_filename=None):
|
|||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
f"""Un référentiel a déjà été chargé d'un fichier de même nom.
|
f"""Un référentiel a déjà été chargé d'un fichier de même nom.
|
||||||
({orig_filename})
|
({orig_filename})
|
||||||
Supprimez-le ou changer le nom du fichier."""
|
Supprimez-le ou changez le nom du fichier."""
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -128,12 +128,15 @@ class ApcReferentielCompetences(db.Model, XMLModel):
|
|||||||
for parcour in parcours
|
for parcour in parcours
|
||||||
}
|
}
|
||||||
# Cherche tronc commun
|
# Cherche tronc commun
|
||||||
niveaux_ids_tc = set.intersection(
|
if niveaux_by_parcours:
|
||||||
*[
|
niveaux_ids_tc = set.intersection(
|
||||||
{n.id for n in niveaux_by_parcours[parcour_id]}
|
*[
|
||||||
for parcour_id in niveaux_by_parcours
|
{n.id for n in niveaux_by_parcours[parcour_id]}
|
||||||
]
|
for parcour_id in niveaux_by_parcours
|
||||||
)
|
]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
niveaux_ids_tc = set()
|
||||||
# Enleve les niveaux du tronc commun
|
# Enleve les niveaux du tronc commun
|
||||||
niveaux_by_parcours_no_tc = {
|
niveaux_by_parcours_no_tc = {
|
||||||
parcour.id: [
|
parcour.id: [
|
||||||
|
@ -18,3 +18,6 @@ class ScoPreference(db.Model):
|
|||||||
name = db.Column(db.String(128), nullable=False, index=True)
|
name = db.Column(db.String(128), nullable=False, index=True)
|
||||||
value = db.Column(db.Text())
|
value = db.Column(db.Text())
|
||||||
formsemestre_id = db.Column(db.Integer, db.ForeignKey("notes_formsemestre.id"))
|
formsemestre_id = db.Column(db.Integer, db.ForeignKey("notes_formsemestre.id"))
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"<{self.__class__.__name__} {self.id} {self.departement.acronym} {self.name}={self.value}>"
|
||||||
|
@ -235,7 +235,7 @@ def refcomp_load(formation_id=None):
|
|||||||
]
|
]
|
||||||
except (ValueError, IndexError):
|
except (ValueError, IndexError):
|
||||||
raise ScoValueError("choix invalide")
|
raise ScoValueError("choix invalide")
|
||||||
f = open(filename)
|
f = open(filename, encoding="utf-8")
|
||||||
else:
|
else:
|
||||||
raise ScoValueError("choix invalide")
|
raise ScoValueError("choix invalide")
|
||||||
try:
|
try:
|
||||||
|
@ -12,28 +12,21 @@ import random
|
|||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from app import db
|
||||||
from app.auth.models import Role, User
|
from app.auth.models import Role, User
|
||||||
|
from app.but.import_refcomp import orebut_import_refcomp
|
||||||
from app import models
|
from app import models
|
||||||
|
from app.models import departements
|
||||||
from app.models import (
|
from app.models import (
|
||||||
|
Absence,
|
||||||
|
ApcReferentielCompetences,
|
||||||
Departement,
|
Departement,
|
||||||
Formation,
|
Formation,
|
||||||
FormSemestre,
|
FormSemestre,
|
||||||
|
FormSemestreEtape,
|
||||||
Identite,
|
Identite,
|
||||||
ModuleImpl,
|
ModuleImpl,
|
||||||
NotesNotes,
|
NotesNotes,
|
||||||
ApcReferentielCompetences,
|
|
||||||
ApcCompetence,
|
|
||||||
Absence,
|
|
||||||
FormSemestreEtape,
|
|
||||||
)
|
|
||||||
from app import db
|
|
||||||
from app.models.but_refcomp import (
|
|
||||||
ApcParcours,
|
|
||||||
ApcAnneeParcours,
|
|
||||||
ApcSituationPro,
|
|
||||||
ApcComposanteEssentielle,
|
|
||||||
ApcNiveau,
|
|
||||||
ApcAppCritique,
|
|
||||||
)
|
)
|
||||||
from app.scodoc import (
|
from app.scodoc import (
|
||||||
sco_cache,
|
sco_cache,
|
||||||
@ -43,35 +36,46 @@ from app.scodoc import (
|
|||||||
sco_groups,
|
sco_groups,
|
||||||
)
|
)
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
from app.scodoc.sco_saisie_notes import notes_add
|
|
||||||
from tools.fakeportal.gen_nomprenoms import nomprenom
|
from tools.fakeportal.gen_nomprenoms import nomprenom
|
||||||
|
|
||||||
random.seed(12345678) # tests reproductibles
|
random.seed(12345678) # tests reproductibles
|
||||||
|
|
||||||
# La formation à utiliser:
|
# La formation à utiliser:
|
||||||
FORMATION_XML_FILENAME = "tests/ressources/formations/scodoc_formation_RT_BUT_RT_v1.xml"
|
FORMATION_XML_FILENAME = "tests/ressources/formations/scodoc_formation_RT_BUT_RT_v1.xml"
|
||||||
|
REFCOMP_FILENAME = (
|
||||||
|
"ressources/referentiels/but2022/competences/but-RT-05012022-081735.xml"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def init_departement(acronym: str) -> Departement:
|
def init_departement(acronym: str) -> Departement:
|
||||||
"Create dept, and switch context into it."
|
"Create dept, and switch context into it."
|
||||||
import app as mapp
|
import app as mapp
|
||||||
|
|
||||||
dept = Departement(acronym=acronym)
|
dept = departements.create_dept(acronym)
|
||||||
db.session.add(dept)
|
|
||||||
mapp.set_sco_dept(acronym)
|
mapp.set_sco_dept(acronym)
|
||||||
db.session.commit()
|
|
||||||
return dept
|
return dept
|
||||||
|
|
||||||
|
|
||||||
def import_formation() -> Formation:
|
def import_formation(dept_id: int) -> Formation:
|
||||||
"""Import formation from XML.
|
"""Import formation from XML.
|
||||||
|
Associate ref. comp.
|
||||||
Returns formation_id
|
Returns formation_id
|
||||||
"""
|
"""
|
||||||
with open(FORMATION_XML_FILENAME) as f:
|
with open(FORMATION_XML_FILENAME, encoding="utf-8") as f:
|
||||||
doc = f.read()
|
doc = f.read()
|
||||||
# --- Création de la formation
|
# --- Création de la formation (import programme)
|
||||||
f = sco_formations.formation_import_xml(doc)
|
f = sco_formations.formation_import_xml(doc)
|
||||||
return Formation.query.get(f[0])
|
formation = Formation.query.get(f[0])
|
||||||
|
# --- Association ref. comp.
|
||||||
|
with open(REFCOMP_FILENAME, encoding="utf-8") as f:
|
||||||
|
xml_data = f.read()
|
||||||
|
ref_comp = orebut_import_refcomp(
|
||||||
|
xml_data, dept_id=dept_id, orig_filename=REFCOMP_FILENAME
|
||||||
|
)
|
||||||
|
formation.referentiel_competence_id = ref_comp.id
|
||||||
|
db.session.add(formation)
|
||||||
|
db.session.commit()
|
||||||
|
return formation
|
||||||
|
|
||||||
|
|
||||||
def create_users(dept: Departement) -> tuple:
|
def create_users(dept: Departement) -> tuple:
|
||||||
@ -269,169 +273,6 @@ def saisie_notes_evaluations(formsemestre: FormSemestre, user: User):
|
|||||||
saisir_notes(evaluation.id, condition_saisie_notes)
|
saisir_notes(evaluation.id, condition_saisie_notes)
|
||||||
|
|
||||||
|
|
||||||
def create_ref_comp(formation: Formation):
|
|
||||||
"""
|
|
||||||
Créer un referentiel de competences
|
|
||||||
"""
|
|
||||||
# ### ApcSituationPro ###
|
|
||||||
# apc_situation_pro_id = 1
|
|
||||||
# apc_situation_pro_competence_id = 1
|
|
||||||
# apc_situation_pro_libelle = ""
|
|
||||||
#
|
|
||||||
# apc_situation_pro = ApcSituationPro(
|
|
||||||
# apc_situation_pro_id, apc_situation_pro_competence_id, apc_situation_pro_libelle
|
|
||||||
# )
|
|
||||||
# db.session.add(apc_situation_pro)
|
|
||||||
# db.session.commit()
|
|
||||||
#
|
|
||||||
# ### ApcComposanteEssentielle ###
|
|
||||||
# apc_composante_essentielle_id = 1
|
|
||||||
# apc_composante_essentielle_competence_id = 1
|
|
||||||
# apc_composante_essentielle_libelle = ""
|
|
||||||
#
|
|
||||||
# apc_composante_essentielle = ApcComposanteEssentielle(
|
|
||||||
# apc_composante_essentielle_id,
|
|
||||||
# apc_composante_essentielle_competence_id,
|
|
||||||
# apc_composante_essentielle_libelle,
|
|
||||||
# )
|
|
||||||
# db.session.add(apc_composante_essentielle)
|
|
||||||
# db.session.commit()
|
|
||||||
#
|
|
||||||
# ### ApcAppCritique ###
|
|
||||||
# apc_app_critique_id = 1
|
|
||||||
# apc_app_critique_niveau_id = 1
|
|
||||||
# apc_app_critique_code = ""
|
|
||||||
# apc_app_critique_libelle = ""
|
|
||||||
# apc_app_critique_modules = formation.modules
|
|
||||||
#
|
|
||||||
# apc_app_critique = ApcAppCritique(
|
|
||||||
# apc_app_critique_id,
|
|
||||||
# apc_app_critique_niveau_id,
|
|
||||||
# apc_app_critique_code,
|
|
||||||
# apc_app_critique_libelle,
|
|
||||||
# apc_app_critique_modules,
|
|
||||||
# )
|
|
||||||
# db.session.add(apc_app_critique)
|
|
||||||
# db.session.commit()
|
|
||||||
#
|
|
||||||
# ### ApcNiveau ###
|
|
||||||
# apc_niveau_id = 1
|
|
||||||
# apc_niveau_competence_id = 1
|
|
||||||
# apc_niveau_libelle = ""
|
|
||||||
# apc_niveau_annee = ""
|
|
||||||
# apc_niveau_ordre = 1
|
|
||||||
# apc_niveau_app_critiques = apc_app_critique
|
|
||||||
#
|
|
||||||
# apc_niveau = ApcNiveau(
|
|
||||||
# apc_niveau_id,
|
|
||||||
# apc_niveau_competence_id,
|
|
||||||
# apc_niveau_libelle,
|
|
||||||
# apc_niveau_annee,
|
|
||||||
# apc_niveau_ordre,
|
|
||||||
# apc_niveau_app_critiques,
|
|
||||||
# )
|
|
||||||
# db.session.add(apc_niveau)
|
|
||||||
# db.session.commit()
|
|
||||||
#
|
|
||||||
# ### ApcCompetence ###
|
|
||||||
# apc_competence_id = 1
|
|
||||||
# apc_competence_referentiel_id = 1
|
|
||||||
# apc_competence_id_orebut = ""
|
|
||||||
# apc_competence_titre = ""
|
|
||||||
# apc_competence_titre_long = ""
|
|
||||||
# apc_competence_couleur = ""
|
|
||||||
# apc_competence_numero = 1
|
|
||||||
# apc_competence_xml_attribs = { # xml_attrib : attribute
|
|
||||||
# "id": "id_orebut",
|
|
||||||
# "nom_court": "titre", # was name
|
|
||||||
# "libelle_long": "titre_long",
|
|
||||||
# }
|
|
||||||
# apc_competence_situations = apc_situation_pro
|
|
||||||
# apc_competence_composantes_essentielles = apc_composante_essentielle
|
|
||||||
# apc_competence_niveaux = apc_niveau
|
|
||||||
#
|
|
||||||
# apc_competence = ApcCompetence(
|
|
||||||
# apc_competence_id,
|
|
||||||
# apc_competence_referentiel_id,
|
|
||||||
# apc_competence_id_orebut,
|
|
||||||
# apc_competence_titre,
|
|
||||||
# apc_competence_titre_long,
|
|
||||||
# apc_competence_couleur,
|
|
||||||
# apc_competence_numero,
|
|
||||||
# apc_competence_xml_attribs,
|
|
||||||
# apc_competence_situations,
|
|
||||||
# apc_competence_composantes_essentielles,
|
|
||||||
# apc_competence_niveaux,
|
|
||||||
# )
|
|
||||||
# db.session.add(apc_competence)
|
|
||||||
# db.session.commit()
|
|
||||||
#
|
|
||||||
# ### ApcAnneeParcours ###
|
|
||||||
# apc_annee_parcours_id = 1
|
|
||||||
# apc_annee_parcours_parcours_id = 1
|
|
||||||
# apc_annee_parcours_ordre = 1
|
|
||||||
#
|
|
||||||
# ap_annee_parcours = ApcAnneeParcours(
|
|
||||||
# apc_annee_parcours_id, apc_annee_parcours_parcours_id, apc_annee_parcours_ordre
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# ### ApcParcours ###
|
|
||||||
# apc_parcours_id = 1
|
|
||||||
# apc_parcours_referentiel_id = 1
|
|
||||||
# apc_parcours_numero = 1
|
|
||||||
# apc_parcours_code = ""
|
|
||||||
# apc_parcours_libelle = ""
|
|
||||||
# apc_parcours_annees = ap_annee_parcours
|
|
||||||
#
|
|
||||||
# apc_parcours = ApcParcours(
|
|
||||||
# apc_parcours_id,
|
|
||||||
# apc_parcours_referentiel_id,
|
|
||||||
# apc_parcours_numero,
|
|
||||||
# apc_parcours_code,
|
|
||||||
# apc_parcours_libelle,
|
|
||||||
# apc_parcours_annees,
|
|
||||||
# )
|
|
||||||
# db.session.add(apc_parcours)
|
|
||||||
# db.session.commit()
|
|
||||||
|
|
||||||
### ApcReferentielCompetences ###
|
|
||||||
apc_referentiel_competences_id = 1
|
|
||||||
apc_referentiel_competences_dept_id = 1
|
|
||||||
apc_referentiel_competences_annexe = ""
|
|
||||||
apc_referentiel_competences_specialite = ""
|
|
||||||
apc_referentiel_competences_specialite_long = ""
|
|
||||||
apc_referentiel_competences_type_titre = ""
|
|
||||||
apc_referentiel_competences_type_structure = ""
|
|
||||||
apc_referentiel_competences_type_departement = ""
|
|
||||||
apc_referentiel_competences_version_orebut = ""
|
|
||||||
apc_referentiel_competences_xml_attribs = {
|
|
||||||
"type": "type_titre",
|
|
||||||
"version": "version_orebut",
|
|
||||||
}
|
|
||||||
apc_referentiel_competences_scodoc_date_loaded = ""
|
|
||||||
apc_referentiel_competences_scodoc_orig_filename = ""
|
|
||||||
# apc_referentiel_competences_competences = apc_competence
|
|
||||||
# apc_referentiel_competences_parcours = apc_parcours
|
|
||||||
# apc_referentiel_competences_formations = formation
|
|
||||||
|
|
||||||
apc_referentiel_competences = ApcReferentielCompetences(
|
|
||||||
dept_id=apc_referentiel_competences_dept_id,
|
|
||||||
annexe=apc_referentiel_competences_annexe,
|
|
||||||
specialite=apc_referentiel_competences_specialite,
|
|
||||||
specialite_long=apc_referentiel_competences_specialite_long,
|
|
||||||
type_titre=apc_referentiel_competences_type_titre,
|
|
||||||
type_structure=apc_referentiel_competences_type_structure,
|
|
||||||
type_departement=apc_referentiel_competences_type_departement,
|
|
||||||
version_orebut=apc_referentiel_competences_version_orebut,
|
|
||||||
scodoc_orig_filename=apc_referentiel_competences_scodoc_orig_filename,
|
|
||||||
)
|
|
||||||
db.session.add(apc_referentiel_competences)
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
formation.referentiel_competence_id = apc_referentiel_competences.id
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def add_absences(formsemestre: FormSemestre):
|
def add_absences(formsemestre: FormSemestre):
|
||||||
"""
|
"""
|
||||||
Ajoute des absences en base
|
Ajoute des absences en base
|
||||||
@ -496,12 +337,11 @@ def init_test_database():
|
|||||||
user_lecteur, user_autre = create_users(dept)
|
user_lecteur, user_autre = create_users(dept)
|
||||||
with sco_cache.DeferredSemCacheManager():
|
with sco_cache.DeferredSemCacheManager():
|
||||||
etuds = create_etuds(dept)
|
etuds = create_etuds(dept)
|
||||||
formation = import_formation()
|
formation = import_formation(dept.id)
|
||||||
formsemestre = create_formsemestre(formation, user_lecteur)
|
formsemestre = create_formsemestre(formation, user_lecteur)
|
||||||
create_evaluations(formsemestre)
|
create_evaluations(formsemestre)
|
||||||
inscrit_etudiants(etuds, formsemestre)
|
inscrit_etudiants(etuds, formsemestre)
|
||||||
saisie_notes_evaluations(formsemestre, user_lecteur)
|
saisie_notes_evaluations(formsemestre, user_lecteur)
|
||||||
create_ref_comp(formation)
|
|
||||||
add_absences(formsemestre)
|
add_absences(formsemestre)
|
||||||
create_etape_apo(formsemestre)
|
create_etape_apo(formsemestre)
|
||||||
# à compléter
|
# à compléter
|
||||||
|
Loading…
Reference in New Issue
Block a user