test unitaire BUT Info: complète formation et config yaml
This commit is contained in:
parent
a42ae3e8ed
commit
49e8cf8e5f
@ -3,41 +3,131 @@
|
|||||||
# mais à ces niveaux sont associés des UEs dont les coefficients des ressources
|
# mais à ces niveaux sont associés des UEs dont les coefficients des ressources
|
||||||
# varient selon le parcours.
|
# varient selon le parcours.
|
||||||
#
|
#
|
||||||
|
# Mise en place cursus avec parcours A et B
|
||||||
|
|
||||||
ReferentielCompetences:
|
ReferentielCompetences:
|
||||||
filename: but-INFO-05012022-081701.xml
|
filename: but-INFO-05012022-081701.xml
|
||||||
specialite: INFO
|
specialite: INFO
|
||||||
|
|
||||||
Formation:
|
Formation:
|
||||||
filename: scodoc_formation_BUT_INFO_v1.xml
|
filename: scodoc_formation_BUT_INFO_v0514.xml
|
||||||
|
# nota: les associations UE/Niveaux sont déjà données dans ce fichier XML.
|
||||||
ues:
|
ues:
|
||||||
|
# S1
|
||||||
|
'UE11':
|
||||||
|
annee: BUT1
|
||||||
|
'UE12':
|
||||||
|
annee: BUT1
|
||||||
|
'UE13':
|
||||||
|
annee: BUT1
|
||||||
|
'UE14':
|
||||||
|
annee: BUT1
|
||||||
|
'UE15':
|
||||||
|
annee: BUT1
|
||||||
|
'UE16':
|
||||||
|
annee: BUT1
|
||||||
|
# S2
|
||||||
|
'UE21':
|
||||||
|
annee: BUT1
|
||||||
|
'UE22':
|
||||||
|
annee: BUT1
|
||||||
|
'UE23':
|
||||||
|
annee: BUT1
|
||||||
|
'UE24':
|
||||||
|
annee: BUT1
|
||||||
|
'UE25':
|
||||||
|
annee: BUT1
|
||||||
|
'UE26':
|
||||||
|
annee: BUT1
|
||||||
|
# S3
|
||||||
|
'UE31':
|
||||||
|
annee: BUT2
|
||||||
|
'UE32':
|
||||||
|
annee: BUT2
|
||||||
|
'UE33':
|
||||||
|
annee: BUT2
|
||||||
|
'UE34':
|
||||||
|
annee: BUT2
|
||||||
|
'UE35':
|
||||||
|
annee: BUT2
|
||||||
|
'UE36':
|
||||||
|
annee: BUT2
|
||||||
# S4
|
# S4
|
||||||
'UE41-A': # UE pour le parcours A
|
'UE41-A': # UE pour le parcours A
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Réaliser
|
'UE41-B': # UE pour le parcours B (même contenu, coefs différents)
|
||||||
'UE41-C': # UE pour le parcours C (même contenu, coefs différents)
|
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Réaliser
|
|
||||||
'UE42':
|
'UE42':
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Optimiser
|
|
||||||
'UE43':
|
'UE43':
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Administrer
|
|
||||||
'UE44':
|
'UE44':
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Gérer
|
|
||||||
'UE45':
|
'UE45':
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Conduire
|
|
||||||
'UE46':
|
'UE46':
|
||||||
annee: BUT2
|
annee: BUT2
|
||||||
competence: Collaborer
|
|
||||||
|
|
||||||
FormSemestres:
|
FormSemestres:
|
||||||
# S4 avec parcours A et C
|
# Semestres avec parcours A et B
|
||||||
S4:
|
S1:
|
||||||
idx: 1
|
idx: 1
|
||||||
date_debut: 2023-01-01
|
date_debut: 2021-09-01
|
||||||
|
date_fin: 2022-01-15
|
||||||
|
codes_parcours: ['A', 'B']
|
||||||
|
S2:
|
||||||
|
idx: 2
|
||||||
|
date_debut: 2022-01-16
|
||||||
|
date_fin: 2022-06-30
|
||||||
|
codes_parcours: ['A', 'B']
|
||||||
|
S3:
|
||||||
|
idx: 3
|
||||||
|
date_debut: 2022-09-01
|
||||||
|
date_fin: 2023-01-15
|
||||||
|
codes_parcours: ['A', 'B']
|
||||||
|
S4:
|
||||||
|
idx: 4
|
||||||
|
date_debut: 2023-01-16
|
||||||
date_fin: 2023-06-30
|
date_fin: 2023-06-30
|
||||||
codes_parcours: ['A', 'C']
|
codes_parcours: ['A', 'B']
|
||||||
|
S5:
|
||||||
|
idx: 5
|
||||||
|
date_debut: 2023-09-01
|
||||||
|
date_fin: 2024-01-15
|
||||||
|
codes_parcours: ['A', 'B']
|
||||||
|
S6:
|
||||||
|
idx: 6
|
||||||
|
date_debut: 2024-01-16
|
||||||
|
date_fin: 2024-06-30
|
||||||
|
codes_parcours: ['A', 'B']
|
||||||
|
|
||||||
|
Etudiants:
|
||||||
|
brillant_a: # cursus S1 -> S6, valide tout
|
||||||
|
prenom: étudiant
|
||||||
|
civilite: X
|
||||||
|
formsemestres:
|
||||||
|
# on ne note que le portfolio, qui affecte toutes les UEs
|
||||||
|
S1:
|
||||||
|
parcours: A
|
||||||
|
notes_modules:
|
||||||
|
"P1": 11
|
||||||
|
S2:
|
||||||
|
parcours: A
|
||||||
|
notes_modules:
|
||||||
|
"P2": 12
|
||||||
|
S3:
|
||||||
|
parcours: A
|
||||||
|
notes_modules:
|
||||||
|
"P3": 13
|
||||||
|
S4:
|
||||||
|
parcours: A
|
||||||
|
notes_modules:
|
||||||
|
"P4-A": 14
|
||||||
|
S5:
|
||||||
|
parcours: A
|
||||||
|
notes_modules:
|
||||||
|
"P5-A": 15
|
||||||
|
S6:
|
||||||
|
parcours: A
|
||||||
|
notes_modules:
|
||||||
|
"P6-A": 16
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Ce test suppose une base département existante.
|
Ce test suppose une base département existante.
|
||||||
|
|
||||||
Usage: pytest tests/unit/test_cursus_but.py
|
Usage: pytest tests/unit/test_but_cursus.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@ -298,10 +298,11 @@ def setup_from_yaml(filename: str) -> dict:
|
|||||||
with open(filename, encoding="utf-8") as f:
|
with open(filename, encoding="utf-8") as f:
|
||||||
doc = yaml.safe_load(f.read())
|
doc = yaml.safe_load(f.read())
|
||||||
|
|
||||||
|
# Charge de ref. comp. avant la formation, de façon à pouvoir
|
||||||
|
# re-créer les associations UE/Niveaux
|
||||||
|
yaml_setup_but.setup_formation_referentiel(doc.get("ReferentielCompetences", {}))
|
||||||
formation = setup_formation(doc["Formation"])
|
formation = setup_formation(doc["Formation"])
|
||||||
yaml_setup_but.setup_formation_referentiel(
|
|
||||||
formation, doc.get("ReferentielCompetences", {})
|
|
||||||
)
|
|
||||||
yaml_setup_but.associe_ues_et_parcours(formation, doc["Formation"])
|
yaml_setup_but.associe_ues_et_parcours(formation, doc["Formation"])
|
||||||
setup_formsemestres(formation, doc)
|
setup_formsemestres(formation, doc)
|
||||||
etudiants = doc.get("Etudiants")
|
etudiants = doc.get("Etudiants")
|
||||||
|
@ -32,13 +32,15 @@ from app.scodoc import sco_utils as scu
|
|||||||
from app.scodoc import sco_pv_dict
|
from app.scodoc import sco_pv_dict
|
||||||
|
|
||||||
|
|
||||||
def setup_formation_referentiel(formation: Formation, refcomp_infos: dict):
|
def setup_formation_referentiel(
|
||||||
|
refcomp_infos: dict, formation: Formation = None
|
||||||
|
) -> ApcReferentielCompetences:
|
||||||
"""Si il y a un référentiel de compétences, indiqué dans le YAML,
|
"""Si il y a un référentiel de compétences, indiqué dans le YAML,
|
||||||
le charge au besoin et l'associe à la formation.
|
le charge au besoin et l'associe à la formation.
|
||||||
"""
|
"""
|
||||||
if not refcomp_infos:
|
if not refcomp_infos:
|
||||||
return
|
return None
|
||||||
assert formation.is_apc() # si ref; comp., doit être APC
|
assert formation is None or formation.is_apc() # si ref. comp., doit être APC
|
||||||
refcomp_filename = refcomp_infos["filename"]
|
refcomp_filename = refcomp_infos["filename"]
|
||||||
refcomp_specialite = refcomp_infos["specialite"]
|
refcomp_specialite = refcomp_infos["specialite"]
|
||||||
# --- Chargement Référentiel
|
# --- Chargement Référentiel
|
||||||
@ -66,8 +68,10 @@ def setup_formation_referentiel(formation: Formation, refcomp_infos: dict):
|
|||||||
specialite=refcomp_specialite
|
specialite=refcomp_specialite
|
||||||
).first() # le recherche à nouveau (test)
|
).first() # le recherche à nouveau (test)
|
||||||
assert referentiel_competence
|
assert referentiel_competence
|
||||||
formation.referentiel_competence_id = referentiel_competence.id
|
if formation:
|
||||||
db.session.add(formation)
|
formation.referentiel_competence_id = referentiel_competence.id
|
||||||
|
db.session.add(formation)
|
||||||
|
return referentiel_competence
|
||||||
|
|
||||||
|
|
||||||
def associe_ues_et_parcours(formation: Formation, formation_infos: dict):
|
def associe_ues_et_parcours(formation: Formation, formation_infos: dict):
|
||||||
@ -100,15 +104,16 @@ def associe_ues_et_parcours(formation: Formation, formation_infos: dict):
|
|||||||
ue.set_parcours(parcours)
|
ue.set_parcours(parcours)
|
||||||
|
|
||||||
# Niveaux compétences:
|
# Niveaux compétences:
|
||||||
competence = referentiel_competence.competences.filter_by(
|
if ue_infos.get("competence"):
|
||||||
titre=ue_infos["competence"]
|
competence = referentiel_competence.competences.filter_by(
|
||||||
).first()
|
titre=ue_infos["competence"]
|
||||||
assert competence is not None # La compétence de titre indiqué doit exister
|
).first()
|
||||||
niveau: ApcNiveau = competence.niveaux.filter_by(
|
assert competence is not None # La compétence de titre indiqué doit exister
|
||||||
annee=ue_infos["annee"]
|
niveau: ApcNiveau = competence.niveaux.filter_by(
|
||||||
).first()
|
annee=ue_infos["annee"]
|
||||||
assert niveau is not None # le niveau de l'année indiquée doit exister
|
).first()
|
||||||
ue.set_niveau_competence(niveau)
|
assert niveau is not None # le niveau de l'année indiquée doit exister
|
||||||
|
ue.set_niveau_competence(niveau)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
associe_modules_et_parcours(formation, formation_infos)
|
associe_modules_et_parcours(formation, formation_infos)
|
||||||
|
Loading…
Reference in New Issue
Block a user