forked from ScoDoc/ScoDoc
BUT: tests unitaires yaml avec association UE/Competences
This commit is contained in:
parent
fcce474f5a
commit
d8a15926e4
@ -126,11 +126,13 @@ class ApcReferentielCompetences(db.Model, XMLModel):
|
||||
on cherche les niveaux qui sont présents dans tous les parcours et les range sous
|
||||
la clé "TC" (toujours présente mais éventuellement liste vide si pas de tronc commun).
|
||||
|
||||
résultat:
|
||||
{
|
||||
"TC" : [ ApcNiveau ],
|
||||
parcour.id : [ ApcNiveau ]
|
||||
}
|
||||
Résultat: couple
|
||||
( [ ApcParcours ],
|
||||
{
|
||||
"TC" : [ ApcNiveau ],
|
||||
parcour.id : [ ApcNiveau ]
|
||||
}
|
||||
)
|
||||
"""
|
||||
parcours_ref = self.parcours.order_by(ApcParcours.numero).all()
|
||||
if parcour is None:
|
||||
|
@ -52,6 +52,7 @@ class UniteEns(db.Model):
|
||||
niveau_competence_id = db.Column(db.Integer, db.ForeignKey("apc_niveau.id"))
|
||||
niveau_competence = db.relationship("ApcNiveau", back_populates="ues")
|
||||
|
||||
# Une ue appartient soit à tous les parcours (tronc commun), soit à un seul:
|
||||
parcour_id = db.Column(db.Integer, db.ForeignKey("apc_parcours.id"), index=True)
|
||||
parcour = db.relationship("ApcParcours", back_populates="ues")
|
||||
|
||||
|
@ -1,9 +1,39 @@
|
||||
# Tests unitaires jury BUT
|
||||
# Essais avec un BUT GB et deux parcours sur S1, S2, S3
|
||||
|
||||
FormationFilename: scodoc_formation_BUT_GB_v1.xml
|
||||
ReferentielCompetencesFilename: but-GB-05012022-081625.xml
|
||||
ReferentielCompetencesSpecialite: GB
|
||||
ReferentielCompetences:
|
||||
filename: but-GB-05012022-081625.xml
|
||||
specialite: GB
|
||||
|
||||
Formation:
|
||||
filename: scodoc_formation_BUT_GB_v1.xml
|
||||
# Association des UE aux compétences:
|
||||
ues:
|
||||
# Tronc commun GB:
|
||||
'UE 11':
|
||||
annee: BUT1
|
||||
competence: Analyser
|
||||
'UE 12':
|
||||
annee: BUT1
|
||||
competence: Experimenter
|
||||
# Parcours SEE
|
||||
'UE 1.3 SEE':
|
||||
annee: BUT1
|
||||
competence: Gérer
|
||||
parcours: SEE
|
||||
'UE 1.4 SEE':
|
||||
annee: BUT1
|
||||
competence: Traiter
|
||||
parcours: SEE
|
||||
# Parcours BMB
|
||||
'UE 1.3 BMB':
|
||||
annee: BUT1
|
||||
competence: Mener
|
||||
parcours: BMB
|
||||
'UE 1.4 BMB':
|
||||
annee: BUT1
|
||||
competence: Réaliser
|
||||
parcours: BMB
|
||||
|
||||
FormSemestres:
|
||||
# S1 et S2 avec les parcours séparés:
|
||||
@ -45,6 +75,8 @@ Etudiants:
|
||||
notes_modules:
|
||||
R1.01: 12
|
||||
R1.SEE.11: 15
|
||||
deca:
|
||||
codes_min: [ ]
|
||||
S2_SEE:
|
||||
parcours: SEE
|
||||
S3:
|
||||
|
@ -14,6 +14,7 @@ from app import db
|
||||
from app.auth.models import User
|
||||
from app.but.import_refcomp import orebut_import_refcomp
|
||||
from app.models import (
|
||||
ApcNiveau,
|
||||
ApcParcours,
|
||||
ApcReferentielCompetences,
|
||||
Evaluation,
|
||||
@ -23,6 +24,7 @@ from app.models import (
|
||||
Module,
|
||||
ModuleImpl,
|
||||
ModuleUECoef,
|
||||
UniteEns,
|
||||
)
|
||||
|
||||
from app.scodoc import sco_formations
|
||||
@ -41,12 +43,14 @@ def setup_but_formation(doc: dict) -> Formation:
|
||||
"""Importe la formation BUT, l'associe au référentiel de compétences.
|
||||
Après cette fonction, on a une formation chargée, et associée à son ref. comp.
|
||||
"""
|
||||
refcomp_filename = doc["ReferentielCompetencesFilename"]
|
||||
refcomp_specialite = doc["ReferentielCompetencesSpecialite"]
|
||||
app.set_sco_dept(DEPT)
|
||||
refcomp_infos = doc["ReferentielCompetences"]
|
||||
formation_infos = doc["Formation"]
|
||||
refcomp_filename = refcomp_infos["filename"]
|
||||
refcomp_specialite = refcomp_infos["specialite"]
|
||||
# Lecture fichier XML local:
|
||||
with open(
|
||||
os.path.join(RESOURCES_DIR, "formations", doc["FormationFilename"]),
|
||||
os.path.join(RESOURCES_DIR, "formations", formation_infos["filename"]),
|
||||
encoding="utf-8",
|
||||
) as f:
|
||||
doc = f.read()
|
||||
@ -82,6 +86,29 @@ def setup_but_formation(doc: dict) -> Formation:
|
||||
assert referentiel_competence
|
||||
formation.referentiel_competence_id = referentiel_competence.id
|
||||
db.session.add(formation)
|
||||
# --- Association des UEs aux parcours niveaux de compétences
|
||||
for ue_acronyme, ue_infos in formation_infos["ues"].items():
|
||||
ue: UniteEns = formation.ues.filter_by(acronyme=ue_acronyme).first()
|
||||
assert ue is not None # l'UE doit exister dans la formation avec cet acronyme
|
||||
# Parcours:
|
||||
if ue_infos.get("parcours", False):
|
||||
parcour = referentiel_competence.parcours.filter_by(
|
||||
code=ue_infos["parcours"]
|
||||
).first()
|
||||
assert parcour is not None # le parcours indiqué pour cette UE doit exister
|
||||
ue.set_parcour(parcour)
|
||||
|
||||
# Niveaux compétences:
|
||||
competence = referentiel_competence.competences.filter_by(
|
||||
titre=ue_infos["competence"]
|
||||
).first()
|
||||
assert competence is not None # La compétence de titre indiqué doit exister
|
||||
niveau: ApcNiveau = competence.niveaux.filter_by(
|
||||
annee=ue_infos["annee"]
|
||||
).first()
|
||||
assert niveau is not None # le niveau de l'année indiquée doit exister
|
||||
ue.set_niveau_competence(niveau)
|
||||
|
||||
db.session.commit()
|
||||
return formation
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user