Ajoute l'extraction des apprentissages critiques en se basant sur les noms/codes officiels donnés dans acs.yml

This commit is contained in:
Cléo Baras 2021-03-29 17:25:16 +02:00
parent 91805de87f
commit 8fad2e9ea1
3 changed files with 69 additions and 4 deletions

View File

@ -142,6 +142,22 @@ for r in RESSOURCES:
if r.code:
r.nom = DATA_RESSOURCES[r.semestre][r.code]
# Remet en forme les ACs
acs = r.apprentissages
if len(acs) != 3:
__LOGGER.warning(f"Problème dans le nombre de compétences de {r.nom}")
for comp in range(3):
donnees = acs[comp] # chaine de caractères listant les ACS
# donnees = donnees.replace("\t", "").replace("-", "") # supprime les tabulations
acs_avec_code = devine_acs_by_code(donnees)
acs_avec_nom = devine_acs_by_nom(donnees)
acs_finaux = sorted(list(set(acs_avec_code + acs_avec_nom)))
r.apprentissages[comp] = acs_finaux
# ************************************************************************
# Affichages divers
# Bilan des heures & Calcul somme des heures
ligne = "{:20s} | {:75s} | {:10s} | {:10s} |"
trait = "-"*len(ligne.format("", "", "", ""))

20
python/pn/acs.yml Normal file
View File

@ -0,0 +1,20 @@
RT1:
AC111: "Maîtriser les lois fondamentales de l'électricité afin d'intervenir sur des équipements de réseaux et télécommunications"
AC112: "Comprendre l'architecture des systèmes numériques et les principes du codage de l'information"
AC113: "Configurer les fonctions de base du réseau local"
AC114: "Maîtriser les rôles et les principes fondamentaux des systèmes d'exploitation afin d'interagir avec ceux-ci pour la configuration et administration des réseaux et services fournis"
AC115: "Identifier les dysfonctionnements du réseau local"
AC116: "Installer un poste client"
RT2:
AC211: "Mesurer et analyser les signaux"
AC212: "Caractériser des systèmes de transmissions élémentaires et découvrir la modélisation mathématique de leur fonctionnement"
AC213: "Déployer des supports de transmission"
AC214: "Connecter les systèmes de ToIP"
AC215: "Communiquer avec un client ou un collaborateur"
RT3:
AC311: "Utiliser un système informatique et ses outils"
AC312: "Lire, exécuter, corriger et modifier un programme"
AC313: "Traduire un algorithme, dans un langage et pour un environnement donné"
AC314: "Connaître l'architecture et les technologies d'un site Web"
AC315: "Choisir les mécanismes de gestion de données adaptés au développement de l'outil"
AC316: "S'intégrer dans un environnement propice au développement et au travail collaboratif"

View File

@ -6,8 +6,12 @@ import unicodedata
__LOGGER = logging.getLogger(__name__)
# Récupère les informations officielles sur les ressources (code/nom)
with open("pn/ressources.yml", 'r', encoding="utf8") as fid:
DATA_RESSOURCES = yaml.load(fid.read(), Loader=yaml.Loader)
# Récupère les données officielles des ACs
with open("pn/acs.yml", 'r', encoding="utf8") as fid:
DATA_ACS = yaml.load(fid.read(), Loader=yaml.Loader)
class Ressource():
def __init__(self, nom, brute):
@ -66,8 +70,33 @@ def get_code_from_nom(ressource):
if nom.startswith(nom_data):
return code
def devine_acs_by_code(champ):
"""Recherche les codes ressources de la forme ACXXX ou AC0XXX dans champ ;
ramène les codes AC0XXX à 3 chiffres.
"""
codes3 = re.findall(r"(AC[0-9][0-9][0-9]\D)", champ) # de code à 3 chiffres
codes4 = re.findall(r"(AC0[0-9][0-9][0-9])", champ)
for sem in DATA_RESSOURCES:
for code in DATA_RESSOURCES[sem]:
nom_data = supprime_accent_espace(DATA_RESSOURCES[sem][code])
print(nom_data)
codes3 += [ "AC" + c[-3:] for c in codes4] # supprime le 0 des acs (codage AC0111)
return sorted(list(set(codes3)))
def devine_acs_by_nom(donnees):
"""Partant d'une chaine de caractères, détermine les codes des ACS
présent dans la donnée, en utilisant les infos officielles de
acs.yml"""
acs = []
donnees_purge = supprime_accent_espace(donnees)
for comp in DATA_ACS:
for code in DATA_ACS[comp]:
acs_purge = supprime_accent_espace(DATA_ACS[comp][code])
if acs_purge in donnees_purge:
acs += [code]
return sorted(list(set(acs)))
if __name__=="__main__":
# Eléments de test
for sem in DATA_RESSOURCES:
for code in DATA_RESSOURCES[sem]:
nom_data = supprime_accent_espace(DATA_RESSOURCES[sem][code])
print(nom_data)