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
|
||||
|
||||
# Bilan des heures & Calcul somme des heures par semestre
|
||||
ligne = "{:20s} | {:75s} | {:10s} | {:10s} |"
|
||||
trait = "-"*len(ligne.format("", "", "", ""))
|
||||
|
||||
# Le tableau des heures ressources
|
||||
for sem in ressources: # parcours des semestres
|
||||
ressem = ressources[sem] # les ressources du semestre
|
||||
print(f"Semestre {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")
|
||||
|
||||
# print(f"Semestre {sem}")
|
||||
chaine = affiche_bilan_heures(ressources, sem)
|
||||
|
||||
|
||||
# Matrice ACS/ressources
|
||||
@ -195,6 +180,16 @@ for sem in ressources:
|
||||
# print("Matrice du semestre " + 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 r in ressources[sem]:
|
||||
|
@ -69,3 +69,26 @@ def get_matrices_ac_ressource(ressources, sem):
|
||||
chaine += ligne.format(*valeurs) + "\n"
|
||||
chaine += trait + "\n"
|
||||
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 modeles import *
|
||||
from officiel import supprime_accent_espace
|
||||
from collections import OrderedDict
|
||||
|
||||
__LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -30,6 +31,31 @@ class Ressource():
|
||||
def __str__(self):
|
||||
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):
|
||||
contenu = get_modele("pn/modele_ressource.tex")
|
||||
|
||||
@ -55,8 +81,8 @@ class Ressource():
|
||||
|
||||
chaine = TemplateLatex(contenu).substitute(code=self.code,
|
||||
nom=self.nom,
|
||||
heures_formation=str(self.heures_encadrees) if self.heures_encadrees else "???",
|
||||
heures_tp=str(self.tp) if self.tp else "???",
|
||||
heures_formation=self.str_heures_formations(),
|
||||
heures_tp=self.str_heures_tp(),
|
||||
compRT1=compRT[0],
|
||||
compRT2=compRT[1],
|
||||
compRT3=compRT[2],
|
||||
@ -160,7 +186,7 @@ def nettoie_acs(r):
|
||||
donnees = r.apprentissages[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_avec_nom = devine_code_by_nom_from_dict(donnees, DATA_ACS)
|
||||
acs_finaux = acs_avec_code + acs_avec_nom
|
||||
acs_finaux = [ac.replace(" ", "") for ac in acs_finaux]
|
||||
acs_finaux = sorted(list(set(acs_finaux)))
|
||||
@ -169,7 +195,7 @@ def nettoie_acs(r):
|
||||
def nettoie_prerequis(r):
|
||||
"""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_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)))
|
||||
if 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)
|
||||
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):
|
||||
"""Recherche les codes ressources de la forme RXXX dans champ ;
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user