forked from viennet/Referentiels
Export yaml (avec pb d'encodage)
This commit is contained in:
parent
01119cb15c
commit
3aea174669
@ -165,25 +165,10 @@ for sem in ressources:
|
|||||||
|
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# Affichages divers
|
# Affichages divers
|
||||||
|
# Le tableau des heures ressources
|
||||||
# Bilan des heures & Calcul somme des heures par semestre
|
|
||||||
ligne = "{:20s} | {:75s} | {:10s} | {:10s} |"
|
|
||||||
trait = "-"*len(ligne.format("", "", "", ""))
|
|
||||||
|
|
||||||
for sem in ressources: # parcours des semestres
|
for sem in ressources: # parcours des semestres
|
||||||
ressem = ressources[sem] # les ressources du semestre
|
# print(f"Semestre {sem}")
|
||||||
print(f"Semestre {sem}")
|
chaine = affiche_bilan_heures(ressources, sem)
|
||||||
print(trait, ligne.format("Code", "Ressource", "Form.", "dont TP"), trait, sep="\n")
|
|
||||||
for r in ressem:
|
|
||||||
print(ligne.format(r.code if r.code else "MANQUANT",
|
|
||||||
# r.nom[:30] + ("..." if len(r.nom) > 30 else "") ,
|
|
||||||
r.nom,
|
|
||||||
str(r.heures_encadrees) if r.heures_encadrees else "MANQUANT",
|
|
||||||
str(r.tp) if r.tp else "MANQUANT"))
|
|
||||||
heures_formation_total = sum([r.heures_encadrees for r in ressem if r.heures_encadrees != None])
|
|
||||||
heures_tp_total = sum([r.tp for r in ressem if r.tp != None])
|
|
||||||
print(trait, ligne.format("", "Total", str(heures_formation_total), str(heures_tp_total)), trait, sep="\n")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Matrice ACS/ressources
|
# Matrice ACS/ressources
|
||||||
@ -195,6 +180,16 @@ for sem in ressources:
|
|||||||
# print("Matrice du semestre " + sem)
|
# print("Matrice du semestre " + sem)
|
||||||
(matrices[sem], chaine) = get_matrices_ac_ressource(ressources, sem)
|
(matrices[sem], chaine) = get_matrices_ac_ressource(ressources, sem)
|
||||||
|
|
||||||
|
# Export yaml
|
||||||
|
WITH_EXPORT = True
|
||||||
|
for sem in ressources:
|
||||||
|
for r in ressources[sem]:
|
||||||
|
output = r.to_yaml()
|
||||||
|
if WITH_EXPORT and r.code:
|
||||||
|
fichier = "export/{}.yml".format(r.code)
|
||||||
|
with open(fichier, "w", encoding="utf8") as fid:
|
||||||
|
fid.write(output)
|
||||||
|
|
||||||
|
|
||||||
for sem in ressources:
|
for sem in ressources:
|
||||||
for r in ressources[sem]:
|
for r in ressources[sem]:
|
||||||
|
@ -69,3 +69,26 @@ def get_matrices_ac_ressource(ressources, sem):
|
|||||||
chaine += ligne.format(*valeurs) + "\n"
|
chaine += ligne.format(*valeurs) + "\n"
|
||||||
chaine += trait + "\n"
|
chaine += trait + "\n"
|
||||||
return (matrice, chaine)
|
return (matrice, chaine)
|
||||||
|
|
||||||
|
def affiche_bilan_heures(ressources, sem):
|
||||||
|
"""Renvoie une chaine décrivant un bilan des heures pour un sem donné"""
|
||||||
|
ligne = "{:20s} | {:75s} | {:10s} | {:10s} |"
|
||||||
|
trait = "-"*len(ligne.format("", "", "", ""))
|
||||||
|
|
||||||
|
ressem = ressources[sem] # les ressources du semestre
|
||||||
|
chaine = ""
|
||||||
|
chaine += trait + "\n"
|
||||||
|
chaine += ligne.format("Code", "Ressource", "Form.", "dont TP") + "\n"
|
||||||
|
chaine += trait + "\n"
|
||||||
|
for r in ressem:
|
||||||
|
chaine += ligne.format(r.code if r.code else "MANQUANT",
|
||||||
|
# r.nom[:30] + ("..." if len(r.nom) > 30 else "") ,
|
||||||
|
r.nom,
|
||||||
|
str(r.heures_encadrees) if r.heures_encadrees else "MANQUANT",
|
||||||
|
str(r.tp) if r.tp else "MANQUANT") + "\n"
|
||||||
|
heures_formation_total = sum([r.heures_encadrees for r in ressem if r.heures_encadrees != None])
|
||||||
|
heures_tp_total = sum([r.tp for r in ressem if r.tp != None])
|
||||||
|
chaine += trait + "\n"
|
||||||
|
chaine += ligne.format("", "Total", str(heures_formation_total), str(heures_tp_total)) + "\n"
|
||||||
|
chaine += trait + "\n"
|
||||||
|
return chaine
|
||||||
|
@ -2,6 +2,7 @@ import re
|
|||||||
from officiel import *
|
from officiel import *
|
||||||
from modeles import *
|
from modeles import *
|
||||||
from officiel import supprime_accent_espace
|
from officiel import supprime_accent_espace
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
__LOGGER = logging.getLogger(__name__)
|
__LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -30,6 +31,31 @@ class Ressource():
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
print(self.nom + " " + self.code)
|
print(self.nom + " " + self.code)
|
||||||
|
|
||||||
|
def str_heures_formations(self):
|
||||||
|
return str(self.heures_encadrees) if self.heures_encadrees else "???"
|
||||||
|
|
||||||
|
def str_heures_tp(self):
|
||||||
|
return str(self.tp) if self.tp else "???"
|
||||||
|
|
||||||
|
def str_semestre(self):
|
||||||
|
return int(self.semestre[1])
|
||||||
|
|
||||||
|
def to_yaml(self):
|
||||||
|
dico = {"nom": self.nom,
|
||||||
|
"code": self.code,
|
||||||
|
"semestre" : self.str_semestre(),
|
||||||
|
"heures_formation": self.str_heures_formations(),
|
||||||
|
"heures_tp": self.str_heures_tp(),
|
||||||
|
"acs": self.apprentissages,
|
||||||
|
"sae": "",
|
||||||
|
"prerequis": self.prerequis,
|
||||||
|
"contexte": self.contexte,
|
||||||
|
"contenu": self.contenu,
|
||||||
|
"motscles": self.mots
|
||||||
|
}
|
||||||
|
output = yaml.dump(dico, Dumper=yaml.Dumper, sort_keys=False)
|
||||||
|
return output
|
||||||
|
|
||||||
def to_latex(self):
|
def to_latex(self):
|
||||||
contenu = get_modele("pn/modele_ressource.tex")
|
contenu = get_modele("pn/modele_ressource.tex")
|
||||||
|
|
||||||
@ -55,8 +81,8 @@ class Ressource():
|
|||||||
|
|
||||||
chaine = TemplateLatex(contenu).substitute(code=self.code,
|
chaine = TemplateLatex(contenu).substitute(code=self.code,
|
||||||
nom=self.nom,
|
nom=self.nom,
|
||||||
heures_formation=str(self.heures_encadrees) if self.heures_encadrees else "???",
|
heures_formation=self.str_heures_formations(),
|
||||||
heures_tp=str(self.tp) if self.tp else "???",
|
heures_tp=self.str_heures_tp(),
|
||||||
compRT1=compRT[0],
|
compRT1=compRT[0],
|
||||||
compRT2=compRT[1],
|
compRT2=compRT[1],
|
||||||
compRT3=compRT[2],
|
compRT3=compRT[2],
|
||||||
@ -160,7 +186,7 @@ def nettoie_acs(r):
|
|||||||
donnees = r.apprentissages[comp] # chaine de caractères listant les ACS
|
donnees = r.apprentissages[comp] # chaine de caractères listant les ACS
|
||||||
# donnees = donnees.replace("\t", "").replace("-", "") # supprime les tabulations
|
# donnees = donnees.replace("\t", "").replace("-", "") # supprime les tabulations
|
||||||
acs_avec_code = devine_acs_by_code(donnees)
|
acs_avec_code = devine_acs_by_code(donnees)
|
||||||
acs_avec_nom = devine_acs_by_nom(donnees)
|
acs_avec_nom = devine_code_by_nom_from_dict(donnees, DATA_ACS)
|
||||||
acs_finaux = acs_avec_code + acs_avec_nom
|
acs_finaux = acs_avec_code + acs_avec_nom
|
||||||
acs_finaux = [ac.replace(" ", "") for ac in acs_finaux]
|
acs_finaux = [ac.replace(" ", "") for ac in acs_finaux]
|
||||||
acs_finaux = sorted(list(set(acs_finaux)))
|
acs_finaux = sorted(list(set(acs_finaux)))
|
||||||
@ -169,7 +195,7 @@ def nettoie_acs(r):
|
|||||||
def nettoie_prerequis(r):
|
def nettoie_prerequis(r):
|
||||||
"""Nettoie les prérequis (ressource) en les remplaçant par leur code de ressource"""
|
"""Nettoie les prérequis (ressource) en les remplaçant par leur code de ressource"""
|
||||||
R_avec_code = devine_ressources_by_code(r.prerequis)
|
R_avec_code = devine_ressources_by_code(r.prerequis)
|
||||||
R_avec_nom = devine_ressources_by_code(r.prerequis)
|
R_avec_nom = devine_code_by_nom_from_dict(r.prerequis, DATA_RESSOURCES)
|
||||||
R_finaux = sorted(list(set(R_avec_code + R_avec_nom)))
|
R_finaux = sorted(list(set(R_avec_code + R_avec_nom)))
|
||||||
if R_finaux:
|
if R_finaux:
|
||||||
r.prerequis = R_finaux
|
r.prerequis = R_finaux
|
||||||
@ -197,20 +223,6 @@ def devine_acs_by_code(champ):
|
|||||||
codes3 += [ "AC" + c[-3:] for c in codes4] # supprime le 0 des acs (codage AC0111)
|
codes3 += [ "AC" + c[-3:] for c in codes4] # supprime le 0 des acs (codage AC0111)
|
||||||
return sorted(list(set(codes3)))
|
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)))
|
|
||||||
|
|
||||||
def devine_ressources_by_code(champ):
|
def devine_ressources_by_code(champ):
|
||||||
"""Recherche les codes ressources de la forme RXXX dans champ ;
|
"""Recherche les codes ressources de la forme RXXX dans champ ;
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user