BUT: tests unitaires yaml: associe modules/parcours + fix formation GB exemple

This commit is contained in:
Emmanuel Viennet 2022-12-08 17:57:01 +01:00
parent d8a15926e4
commit 26abfd622a
4 changed files with 184 additions and 26 deletions

View File

@ -1142,7 +1142,7 @@ def confirm_dialog(
def objects_renumber(db, obj_list) -> None:
"""fixe les numeros des objets d'une liste de modèles
pour ne pas changer son ordre"""
log(f"objects_renumber {obj_list}")
log(f"objects_renumber")
for i, obj in enumerate(obj_list):
obj.numero = i
db.session.add(obj)

View File

@ -625,7 +625,26 @@
</matiere>
<matiere titre="SAÉ" numero="0"/>
</ue>
<ue acronyme="UE 23" numero="6" titre="Mener des études dans un contexte de fonctionnement cellulaire et physiologique normal" type="0" ue_code="UCOD25" ects="5.0" is_external="0" code_apogee="7WEC2" coefficient="50.0" semestre_idx="2" color="#feb40b" coef_rcue="1.0" parcour_id="7" apc_niveau_libelle="Mener des études dans un contexte de fonctionnement cellulaire et physiologique normal " apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="41">
<ue acronyme="UE 1.4 BMB" numero="6" titre="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médicale" type="0" ue_code="UCOD20" ects="4.0" is_external="0" code_apogee="7WED1" coefficient="40.0" semestre_idx="1" color="#80cb3f" coef_rcue="1.0" parcour_id="7" apc_niveau_libelle="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médical " apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="37">
<matiere titre="Ressources" numero="0">
<module titre="Communication" abbrev="Communication" code="R112 (UE14)" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="1.0" ects="" semestre_id="1" numero="1" code_apogee="7WES1COM" module_type="0"/>
<module titre="Mettre en œuvre un examen de biologie médicale de première intention en hématologie et immunologie dans le cadre dun contrôle et/ou dune prévention" abbrev="Mettre en œuvre un examen de biologie médicale de première intention en hématologie et immunologie dans le cadre dun contrôle et/ou dune prévention" code="SAÉ1.BMB.04" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="16.0" ects="" semestre_id="1" numero="3" code_apogee="7WES1EBM" module_type="3">
<coefficients ue_reference="37" coef="16.0"/>
<parcours code="BMB" numero="0" libelle="Biologie médicale et biotechnologie "/>
<app_critiques code="AC14.01" libelle="Mettre en oeuvre les approches d'hématologie afin de réaliser un hémogramme et le groupage sanguin"/>
<app_critiques code="AC14.03" libelle="Utiliser les techniques de bases en immunologie et réaliser les examens sérologiques les plus fréquents"/>
</module>
<module titre="Anglais" abbrev="Anglais" code="R113 (UE14)" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="1.0" ects="" semestre_id="1" numero="13" code_apogee="7WES1ANG" module_type="0"/>
<module titre="Projet personnel et professionnel (PPP)" abbrev="Projet personnel et professionnel (PPP)" code="R114 (UE14)" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="0.5" ects="" semestre_id="1" numero="14" code_apogee="7WES1PPP" module_type="0"/>
<module titre="Immunologie" abbrev="Immunologie" code="R1.BMB.17" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="10.5" ects="" semestre_id="1" numero="16" code_apogee="7WES1HEM" module_type="2">
<coefficients ue_reference="37" coef="10.0"/>
<parcours code="BMB" numero="0" libelle="Biologie médicale et biotechnologie "/>
</module>
<module titre="Immunologie" abbrev="Immunologie" code="R118BMB" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="11.0" ects="" semestre_id="1" numero="17" code_apogee="7WES1IMM" module_type="2"/>
</matiere>
<matiere titre="SAÉ" numero="0"/>
</ue>
<ue acronyme="UE 23 BMB" numero="7" titre="Mener des études dans un contexte de fonctionnement cellulaire et physiologique normal" type="0" ue_code="UCOD25" ects="5.0" is_external="0" code_apogee="7WEC2" coefficient="50.0" semestre_idx="2" color="#feb40b" coef_rcue="1.0" parcour_id="7" apc_niveau_libelle="Mener des études dans un contexte de fonctionnement cellulaire et physiologique normal " apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="41">
<matiere titre="Ressources" numero="1">
<module titre="Cultiver des cellules dans le respect des bonnes pratiques de laboratoire" abbrev="Cultiver des cellules dans le respect des bonnes pratiques de laboratoire" code="SAE23" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="18.0" ects="" semestre_id="2" numero="4" code_apogee="7WES2CUL" module_type="3">
<coefficients ue_reference="41" coef="18.0"/>
@ -650,26 +669,7 @@
</matiere>
<matiere titre="SAÉ" numero="1"/>
</ue>
<ue acronyme="UE 1.4 BMB" numero="7" titre="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médicale" type="0" ue_code="UCOD20" ects="4.0" is_external="0" code_apogee="7WED1" coefficient="40.0" semestre_idx="1" color="#80cb3f" coef_rcue="1.0" parcour_id="7" apc_niveau_libelle="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médical " apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="37">
<matiere titre="Ressources" numero="0">
<module titre="Communication" abbrev="Communication" code="R112 (UE14)" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="1.0" ects="" semestre_id="1" numero="1" code_apogee="7WES1COM" module_type="0"/>
<module titre="Mettre en œuvre un examen de biologie médicale de première intention en hématologie et immunologie dans le cadre dun contrôle et/ou dune prévention" abbrev="Mettre en œuvre un examen de biologie médicale de première intention en hématologie et immunologie dans le cadre dun contrôle et/ou dune prévention" code="SAÉ1.BMB.04" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="16.0" ects="" semestre_id="1" numero="3" code_apogee="7WES1EBM" module_type="3">
<coefficients ue_reference="37" coef="16.0"/>
<parcours code="BMB" numero="0" libelle="Biologie médicale et biotechnologie "/>
<app_critiques code="AC14.01" libelle="Mettre en oeuvre les approches d'hématologie afin de réaliser un hémogramme et le groupage sanguin"/>
<app_critiques code="AC14.03" libelle="Utiliser les techniques de bases en immunologie et réaliser les examens sérologiques les plus fréquents"/>
</module>
<module titre="Anglais" abbrev="Anglais" code="R113 (UE14)" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="1.0" ects="" semestre_id="1" numero="13" code_apogee="7WES1ANG" module_type="0"/>
<module titre="Projet personnel et professionnel (PPP)" abbrev="Projet personnel et professionnel (PPP)" code="R114 (UE14)" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="0.5" ects="" semestre_id="1" numero="14" code_apogee="7WES1PPP" module_type="0"/>
<module titre="Immunologie" abbrev="Immunologie" code="R1.BMB.17" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="10.5" ects="" semestre_id="1" numero="16" code_apogee="7WES1HEM" module_type="2">
<coefficients ue_reference="37" coef="10.0"/>
<parcours code="BMB" numero="0" libelle="Biologie médicale et biotechnologie "/>
</module>
<module titre="Immunologie" abbrev="Immunologie" code="R118BMB" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="11.0" ects="" semestre_id="1" numero="17" code_apogee="7WES1IMM" module_type="2"/>
</matiere>
<matiere titre="SAÉ" numero="0"/>
</ue>
<ue acronyme="UE 24" numero="8" titre="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médicale" type="0" ue_code="UCOD26" ects="5.0" is_external="0" code_apogee="7WED2" coefficient="50.0" semestre_idx="2" color="#80cb3f" coef_rcue="1.0" parcour_id="7" apc_niveau_libelle="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médical " apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="42">
<ue acronyme="UE 24 BMB" numero="8" titre="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médicale" type="0" ue_code="UCOD26" ects="5.0" is_external="0" code_apogee="7WED2" coefficient="50.0" semestre_idx="2" color="#80cb3f" coef_rcue="1.0" parcour_id="7" apc_niveau_libelle="Mettre en oeuvre les examens les plus courants en laboratoire de biologie médical " apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="42">
<matiere titre="Ressources" numero="1">
<module titre="Mettre en œuvre un examen de biologie médicale de première intention en biochimie dans le cadre dun contrôle et/ou dune prévention" abbrev="Mettre en œuvre un examen de biologie médicale de première intention en biochimie dans le cadre dun contrôle et/ou dune prévention" code="SAE24" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="9.0" ects="" semestre_id="2" numero="16" code_apogee="7WES2EBM" module_type="3">
<coefficients ue_reference="42" coef="9.0"/>
@ -702,6 +702,80 @@
</matiere>
<matiere titre="SAÉ" numero="1"/>
</ue>
<ue acronyme="UE 23 SEE" numero="9" titre="Caractériser un écosystème" type="0" ue_code="UCOD14" ects="6.0" is_external="0" code_apogee="7WFC2" coefficient="60.0" semestre_idx="2" color="#feb40b" coef_rcue="1.0" parcour_id="5" apc_niveau_libelle="Caractériser un écosystème" apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="769">
<matiere titre="Ressources" numero="1">
<module titre="Observation, échantillonnage et découvertes du milieu" abbrev="Observation, échantillonnage et découvertes du milieu" code="R214SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="1.5" ects="" semestre_id="2" numero="13" code_apogee="7WES2OED" module_type="2">
<coefficients ue_reference="769" coef="1.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Biodiversité animale" abbrev="Biodiversité animale" code="R215SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="4.5" ects="" semestre_id="2" numero="14" code_apogee="7WES2BDA" module_type="2">
<coefficients ue_reference="769" coef="4.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Biodiversité végétale" abbrev="Biodiversité végétale" code="R216SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="4.5" ects="" semestre_id="2" numero="15" code_apogee="7WES2BDV" module_type="2">
<coefficients ue_reference="769" coef="4.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Biodiversité microbienne" abbrev="Biodiversité microbienne" code="R217SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="4.5" ects="" semestre_id="2" numero="17" code_apogee="7WES2BDM" module_type="2">
<coefficients ue_reference="769" coef="4.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Géosciences" abbrev="Géosciences" code="R218SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="7.0" ects="" semestre_id="2" numero="18" code_apogee="7WFS2GEO" module_type="2">
<coefficients ue_reference="769" coef="7.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Cartographie" abbrev="Cartographie" code="R219SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="3.0" ects="" semestre_id="2" numero="19" code_apogee="7WFS2CAR" module_type="2">
<coefficients ue_reference="769" coef="3.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Climatologie" abbrev="Climatologie" code="R220SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="3.0" ects="" semestre_id="2" numero="20" code_apogee="7WFS2CLI" module_type="2">
<coefficients ue_reference="769" coef="3.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Bases d'écologie" abbrev="Bases d'écologie" code="R221SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="5.5" ects="" semestre_id="2" numero="21" code_apogee="7WFS2ECO" module_type="2">
<coefficients ue_reference="769" coef="5.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Description d'un milieu et de sa biodiversité" abbrev="Description d'un milieu et de sa biodiversité" code="SAE23" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="22.0" ects="" semestre_id="2" numero="29" code_apogee="7WFS2SAE" module_type="3">
<coefficients ue_reference="769" coef="22.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Portfolio" abbrev="Portfolio" code="Portfolio23" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="2.0" ects="" semestre_id="2" numero="30" code_apogee="7WES2POF" module_type="3">
<coefficients ue_reference="769" coef="2.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
</matiere>
<matiere titre="SAÉ" numero="2"/>
</ue>
<ue acronyme="UE 24 SEE" numero="10" titre="Caractériser les pollutions" type="0" ue_code="UCOD15" ects="4.0" is_external="0" code_apogee="7WFD2" coefficient="40.0" semestre_idx="2" color="#80cb3f" coef_rcue="1.0" parcour_id="5" apc_niveau_libelle="Caractériser les pollutions" apc_niveau_annee="BUT1" apc_niveau_ordre="1" reference="770">
<matiere titre="Ressources" numero="1">
<module titre="Pollutions biologiques" abbrev="Pollutions biologiques" code="R222SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="6.5" ects="" semestre_id="2" numero="22" code_apogee="7WFS2PBI" module_type="2">
<coefficients ue_reference="770" coef="6.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Pollutions chimiques" abbrev="Pollutions chimiques" code="R223SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="7.0" ects="" semestre_id="2" numero="23" code_apogee="7WFS2PCH" module_type="2">
<coefficients ue_reference="770" coef="7.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Pollutions physiques" abbrev="Pollutions physiques" code="R224SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="6.5" ects="" semestre_id="2" numero="24" code_apogee="7WFS2PPH" module_type="2">
<coefficients ue_reference="770" coef="6.5"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Utilisation de logiciel pour l'échantillonnage" abbrev="Utilisation de logiciel pour l'échantillonnage" code="R225SEE" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="1.5" ects="" semestre_id="2" numero="25" code_apogee="7WFS2ULE" module_type="2">
<coefficients ue_reference="770" coef="1.5"/>
</module>
<module titre="Echantillonner une matrice environnementale et mettre en oeuvre le dosage d'un polluant" abbrev="Echantillonner une matrice environnementale et mettre en oeuvre le dosage d'un polluant" code="SAE24" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="14.0" ects="" semestre_id="2" numero="31" code_apogee="7WFS2SAE" module_type="3">
<coefficients ue_reference="770" coef="14.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
<module titre="Portfolio" abbrev="Portfolio" code="Portfolio24" heures_cours="0.0" heures_td="0.0" heures_tp="0.0" coefficient="2.0" ects="" semestre_id="2" numero="32" code_apogee="" module_type="3">
<coefficients ue_reference="770" coef="2.0"/>
<parcours code="SEE" numero="0" libelle="Sciences de l'environnement et écotechnologies"/>
</module>
</matiere>
<matiere titre="SAÉ" numero="2"/>
</ue>
<ue acronyme="UE 3.2" numero="9" titre="Expérimenter dans le génie biologique" type="0" ue_code="UCOD47" ects="4.0" is_external="0" code_apogee="" coefficient="0.0" semestre_idx="3" color="#f97b3d" coef_rcue="1.0" parcour_id="" apc_niveau_libelle="Expérimenter pour comprendre une problématique scientifique" apc_niveau_annee="BUT2" apc_niveau_ordre="2" reference="1089">
<matiere titre="Expérimenter dans le génie biologique" numero="1"/>
</ue>

View File

@ -9,14 +9,14 @@ Formation:
filename: scodoc_formation_BUT_GB_v1.xml
# Association des UE aux compétences:
ues:
# Tronc commun GB:
# S1 : Tronc commun GB
'UE 11':
annee: BUT1
competence: Analyser
'UE 12':
annee: BUT1
competence: Experimenter
# Parcours SEE
# S1 Parcours SEE
'UE 1.3 SEE':
annee: BUT1
competence: Gérer
@ -25,7 +25,7 @@ Formation:
annee: BUT1
competence: Traiter
parcours: SEE
# Parcours BMB
# S1 Parcours BMB
'UE 1.3 BMB':
annee: BUT1
competence: Mener
@ -34,6 +34,69 @@ Formation:
annee: BUT1
competence: Réaliser
parcours: BMB
# S2 : Tronc commun GB
'UE 21':
annee: BUT1
competence: Analyser
'UE 22':
annee: BUT1
competence: Experimenter
# S2 Parcours SEE
'UE 23 SEE':
annee: BUT1
competence: Gérer
parcours: SEE
'UE 24 SEE':
annee: BUT1
competence: Traiter
parcours: SEE
# S2 Parcours BMB
'UE 23 BMB':
annee: BUT1
competence: Mener
parcours: BMB
'UE 24 BMB':
annee: BUT1
competence: Réaliser
parcours: BMB
# S3 : Tronc commun GB
'UE 3.1':
annee: BUT2
competence: Analyser
'UE 3.2':
annee: BUT2
competence: Experimenter
# S3 BMB
'UE 3.3 BMB':
annee: BUT2
competence: Mener
parcours: BMB
'UE 3.4 BMB':
annee: BUT2
competence: Réaliser
parcours: BMB
'UE 3.5 BMB':
annee: BUT2
competence: Mettre en œuvre
parcours: BMB
# S3 SEE
'UE 3.3 SEE':
annee: BUT2
competence: Gérer
parcours: SEE
'UE 3.4 SEE':
annee: BUT2
competence: Traiter
parcours: SEE
'UE 3.5 SEE':
annee: BUT2
competence: Déployer
parcours: SEE
modules_parcours:
# cette section permet d'associer des modules à des parcours
# les codes modules peuvent être des regexp
BMB: [ .*BMB.* ]
SEE: [ .*SEE.* ]
FormSemestres:
# S1 et S2 avec les parcours séparés:

View File

@ -1,8 +1,8 @@
""" Test jury BUT avec parcours
"""
import datetime
import os
from pathlib import Path
import re
from flask import current_app, g
import pytest
@ -110,9 +110,30 @@ def setup_but_formation(doc: dict) -> Formation:
ue.set_niveau_competence(niveau)
db.session.commit()
associe_modules_et_parcours(formation, formation_infos)
return formation
def associe_modules_et_parcours(formation: Formation, formation_infos: dict):
"""Associe les modules à des parcours, grâce au champ modules_parcours"""
for code_parcours, codes_modules in formation_infos.get(
"modules_parcours", {}
).items():
parcour = formation.referentiel_competence.parcours.filter_by(
code=code_parcours
).first()
assert parcour is not None # code parcours doit exister dans le ref. comp.
for code_module in codes_modules:
for module in [
module
for module in formation.modules
if re.match(code_module, module.code)
]:
module.parcours.append(parcour)
db.session.add(module)
db.session.commit()
def _un_semestre(
formation: Formation,
parcours: list[ApcParcours],