From a2fc801fd2b6c376e3a03d2344c0f029b4d1288f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9o=20Baras?= Date: Fri, 2 Apr 2021 16:08:14 +0200 Subject: [PATCH] =?UTF-8?q?Modifie=20les=20macros=20latex=20en=20pr=C3=A9v?= =?UTF-8?q?ision=20de=20l'introduction=20des=20macros=20sae?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- latex/macros_formations.sty | 55 ++++++++------------------ latex/ressources/R107.tex | 24 ++++++------ latex/ressources/R108.tex | 24 ++++++------ python/export_sae_docx_to_yaml.py | 64 ++++++++----------------------- python/export_yaml_to_latex.py | 13 ++++--- python/pn/modele_ressource.tex | 14 +++---- python/ressource.py | 8 ++-- python/ressourcedocx.py | 30 ++++++++++++++- python/tools.py | 4 +- 9 files changed, 107 insertions(+), 129 deletions(-) diff --git a/latex/macros_formations.sty b/latex/macros_formations.sty index fd7f0e4..5fd025c 100644 --- a/latex/macros_formations.sty +++ b/latex/macros_formations.sty @@ -56,7 +56,6 @@ \expandafter\def\csname semestrename\currentsemestre\endcsname{Semestre \arabic{cptsemestre}} \expandafter\def\csname semestrenumero\currentsemestre\endcsname{\arabic{cptsemestre}} - } @@ -64,6 +63,7 @@ % Ressources % **************************** +% **************************** % Déclaration de la ressource : % \nouvelleressource{code_ressource}{intitule_ressource} \def\nouvelleressource#1#2{ @@ -82,55 +82,33 @@ %\definecollection{ressourcedescription\currentressource} } +% **************************** % Ajout des heures à la ressource courante -\def\ajoutheures#1#2{ +\def\ajoutRheures#1#2{ \expandafter\xdef\csname ressourcetraining\currentressource\endcsname{#1} % heures de formation encadrées \expandafter\xdef\csname ressourcetp\currentressource\endcsname{#2} % heures de projet } +% **************************** % Ajout du descriptif (ancrage) -\def\ajoutancrage#1{ +\def\ajoutRancrage#1{ \begingroup\let\+\relax \expandafter\gdef\csname ressourceancrage\currentressource\endcsname{\noexpand #1} % descriptif \endgroup } +% **************************** % Ajout des contenus -\def\ajoutcontenudetaille#1{ +\def\ajoutRcontenudetaille#1{ \begingroup\let\+\relax \expandafter\gdef\csname ressourcecontenudetaille\currentressource\endcsname{\noexpand #1} % liste de contenu \endgroup } -%% Ajout des contenus principaux : introduction éventuelle -%\def\ajoutintrocontenu#1{ - %\expandafter\xdef\csname ressourceintrocontenu\currentressource\endcsname{#1} % descriptif -%} -% -%% Ajout des contenus principaux -%\def\ajoutcontenu#1{ - %\addtocounter{cptcontenu\currentressource}{1} % Ajoute un contenu (aka un item à la liste des contenus) - %\xdef\currentcontenu{\Alph{cptcontenu\currentressource}} % La lettre du contenu courant - % - %\expandafter\xdef\csname ressourcecontenu\currentressource\currentcontenu\endcsname{#1} % descriptif - %\newcounter{cptcontenudetail\currentressource\currentcontenu} % Le compteur de détails -%} -% -%% Ajout de détails aux contenux (sous-liste) -%\def\ajoutdetailcontenu#1{ - %\addtocounter{cptcontenudetail\currentressource\currentcontenu}{1} % Ajoute un détail à la liste des contenus - % - %\expandafter\xdef\csname ressourcecontenudetail\currentressource\currentcontenu\Alph{cptcontenudetail\currentressource\currentcontenu}\endcsname{#1} % descriptif -%} -% -%\def\ajoutconclusioncontenu#1{ - %\expandafter\xdef\csname ressourceconclucontenu\currentressource\endcsname{#1} % la conclusion -%} - - +% **************************** % Ajout des compétences % \ajoutcompetence{nom_competence}{niveau} -\def\ajoutcompetence#1#2{ +\def\ajoutRcompetence#1#2{ \addtocounter{cptressourcecomp\currentressource}{1} % le compteur de la comp dans la ressource \xdef\currentcomp{\Alph{cptressourcecomp\currentressource}} % La lettre de la comp dans la ressource @@ -141,8 +119,9 @@ \newcounter{cptressourceac\currentressource\currentcomp} % le compteur d'ac pour la compétence rattachées à la ressource } +% **************************** % Ajout d'AC aux compétences -\def\ajoutac#1#2{ +\def\ajoutRac#1#2{ \addtocounter{cptressourceac\currentressource\currentcomp}{1} % le compteur de l'ac pour la comp dans la ressource \xdef\currentac{\Alph{cptressourceac\currentressource\currentcomp}} % La lettre de l'ac pour la comp dans la ressource @@ -155,12 +134,11 @@ \else \expandafter\xdef\csname loopressourceac\currentressource\currentcomp\endcsname{\csname loopressourceac\currentressource\currentcomp\endcsname,\currentac} \fi - - } +% **************************** % Ajout des SAE -\def\ajoutsae#1#2{ +\def\ajoutRsae#1#2{ \addtocounter{cptressourcesae\currentressource}{1} % le compteur de la sae dans la ressource \xdef\currentsae{\Alph{cptressourcesae\currentressource}} % La lettre @@ -168,8 +146,9 @@ \expandafter\xdef\csname ressourcesaename\currentressource\currentsae\endcsname{#2} % } +% **************************** % Ajout des prerequis -\def\ajoutprerequis#1#2{ +\def\ajoutRprerequis#1#2{ \addtocounter{cptressourceprerequis\currentressource}{1} % le compteur du prerequis dans la ressource \xdef\currentprerequis{\Alph{cptressourceprerequis\currentressource}} % La lettre @@ -177,10 +156,10 @@ \expandafter\xdef\csname ressourceprerequisname\currentressource\currentprerequis\endcsname{#2} % } +% **************************** % Ajout des mots-clés -\def\ajoutmotscles#1{ +\def\ajoutRmotscles#1{ \expandafter\xdef\csname ressourcemotscles\currentressource\endcsname{#1} % descriptif - } diff --git a/latex/ressources/R107.tex b/latex/ressources/R107.tex index 7b2b320..4f2fa17 100644 --- a/latex/ressources/R107.tex +++ b/latex/ressources/R107.tex @@ -4,31 +4,31 @@ \nouvelleressource{R107}{Fondamentaux de la programmation} -\ajoutheures{41}{30} +\ajoutRheures{41}{30} %% Les compétences et les ACs -\ajoutcompetence{RT1-Administrer}{\niveauA} +\ajoutRcompetence{RT1-Administrer}{\niveauA} -\ajoutcompetence{RT2-Connecter}{\niveauA} +\ajoutRcompetence{RT2-Connecter}{\niveauA} -\ajoutcompetence{RT3-Programmer}{\niveauA} +\ajoutRcompetence{RT3-Programmer}{\niveauA} -\ajoutac{AC0311}{Utiliser un système informatique et ses outils} -\ajoutac{AC0312}{Lire, exécuter, corriger et modifier un programme} -\ajoutac{AC0313}{Traduire un algorithme, dans un langage et pour un environnement donné} -\ajoutac{AC0316}{S'intégrer dans un environnement propice au développement et au travail collaboratif} +\ajoutRac{AC0311}{Utiliser un système informatique et ses outils} +\ajoutRac{AC0312}{Lire, exécuter, corriger et modifier un programme} +\ajoutRac{AC0313}{Traduire un algorithme, dans un langage et pour un environnement donné} +\ajoutRac{AC0316}{S'intégrer dans un environnement propice au développement et au travail collaboratif} % Les SAE -\ajoutsae{SAÉ15}{Traiter des données} +\ajoutRsae{SAÉ15}{Traiter des données} % Les pre-requis % Le descriptif -\ajoutancrage{Elle fournit les bases conceptuelles et pratiques pour concevoir et +\ajoutRancrage{Elle fournit les bases conceptuelles et pratiques pour concevoir et spécifier formellement un traitement automatisé de l'information. Ces bases pourront venir en appui de nombreuses compétences techniques (en informatique, en réseau, en télécommunication, \ldots) que le @@ -39,7 +39,7 @@ notamment le développement d'outils informatiques à usage interne d'une de la maintenance des outils logiciels (compétence RT1-Administrer).} % Contenus -\ajoutcontenudetaille{ +\ajoutRcontenudetaille{ En utilisant un langage de programmation, comme par exemple Python, les contenus suivants seront traités : \begin{itemize} @@ -75,4 +75,4 @@ L'utilisation de l'anglais est préconisée pour la documentation du code. } % Mots-clés -\ajoutmotscles{Algorithmes, langages de programmation, méthodologie de développement, suivi de versions} +\ajoutRmotscles{Algorithmes, langages de programmation, méthodologie de développement, suivi de versions} diff --git a/latex/ressources/R108.tex b/latex/ressources/R108.tex index 0cea736..725ac7a 100644 --- a/latex/ressources/R108.tex +++ b/latex/ressources/R108.tex @@ -4,30 +4,30 @@ \nouvelleressource{R108}{Bases des systèmes d'exploitation} -\ajoutheures{27}{21} +\ajoutRheures{27}{21} %% Les compétences et les ACs -\ajoutcompetence{RT1-Administrer}{\niveauA} +\ajoutRcompetence{RT1-Administrer}{\niveauA} -\ajoutac{AC0114}{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} -\ajoutac{AC0116}{Installer un poste client} +\ajoutRac{AC0114}{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} +\ajoutRac{AC0116}{Installer un poste client} -\ajoutcompetence{RT2-Connecter}{\niveauA} +\ajoutRcompetence{RT2-Connecter}{\niveauA} -\ajoutcompetence{RT3-Programmer}{\niveauA} +\ajoutRcompetence{RT3-Programmer}{\niveauA} -\ajoutac{AC0311}{Utiliser un système informatique et ses outils} -\ajoutac{AC0312}{Lire, exécuter, corriger et modifier un programme} +\ajoutRac{AC0311}{Utiliser un système informatique et ses outils} +\ajoutRac{AC0312}{Lire, exécuter, corriger et modifier un programme} % Les SAE -\ajoutsae{SAÉ15}{Traiter des données} +\ajoutRsae{SAÉ15}{Traiter des données} % Les pre-requis % Le descriptif -\ajoutancrage{Cette ressource traite des bases de l'utilisation d'un poste client et +\ajoutRancrage{Cette ressource traite des bases de l'utilisation d'un poste client et de son système d'exploitation. Elle est essentielle pour la prise en main pratique d'un système informatique en abordant notamment la gestion des données dans un espace de stockage (organisation, recherche, droits) @@ -46,7 +46,7 @@ Elle contribue donc aux apprentissages critiques mentionnés précédemment.} % Contenus -\ajoutcontenudetaille{ +\ajoutRcontenudetaille{ \begin{itemize} \item Systèmes d'exploitations Windows/Linux, Interface-Homme-Machine et @@ -73,4 +73,4 @@ précédemment.} } % Mots-clés -\ajoutmotscles{Programmation, arborescence, processus, scripts, variables d'environnement, PIX} +\ajoutRmotscles{Programmation, arborescence, processus, scripts, variables d'environnement, PIX} diff --git a/python/export_sae_docx_to_yaml.py b/python/export_sae_docx_to_yaml.py index 73c0605..54d738b 100644 --- a/python/export_sae_docx_to_yaml.py +++ b/python/export_sae_docx_to_yaml.py @@ -164,56 +164,24 @@ for s in liste_exemples: saes = {"S1" : [], "S2": []} for s in liste_saes: + print(f"{s.nom}") nettoie_heure_sae(s) nettoie_semestre(s) nettoie_acs(s) nettoie_ressources(s) - print("ici") -# -# # Remet en forme les pré-requis -# nettoie_prerequis(r) -# -# # Remet en forme le descriptif -# split_description(r) -# nettoie_contenus(r) -# -# # Remet en forme les mots-clés -# # Tri dans le bon semestre -# ressources[r.semestre] += [r] -# -# # complète les codes d'après les numéros -# for sem in ressources: -# for (i, r) in enumerate(ressources[sem]): -# if not r.code: -# if i == 0: -# r.code = "R" + sem[1] + "01" -# elif ressources[sem][i-1].code: -# r.code = "R" + sem[1] + "{:02d}".format(int(ressources[sem][i-1].code[-2:])+1) -# -# # ************************************************************************ -# # Affichages divers -# # Le tableau des heures ressources -# for sem in ressources: # parcours des semestres -# # print(f"Semestre {sem}") -# chaine = affiche_bilan_heures(ressources, sem) -# -# -# # Matrice ACS/ressources -# matrices = {} -# les_codes_acs = [code for comp in DATA_ACS for code in DATA_ACS[comp]] -# nbre_acs = len(les_codes_acs) -# -# for sem in ressources: -# # print("Matrice du semestre " + sem) -# (matrices[sem], chaine) = get_matrices_ac_ressource(ressources, sem) -# + # nettoie_description(s) => rien à faire ? + nettoie_livrables_sae(s) + nettoie_mots_cles(s) + + # Tri dans le bon semestre + saes[s.semestre] += [s] + # # 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 saes: + for s in saes[sem]: + output = s.to_yaml() + if s.code: + fichier = "export/{}.yml".format(s.code.replace("É", "E")) + with open(fichier, "w", encoding="utf8") as fid: + fid.write(output) + diff --git a/python/export_yaml_to_latex.py b/python/export_yaml_to_latex.py index d15b88a..b56d47a 100644 --- a/python/export_yaml_to_latex.py +++ b/python/export_yaml_to_latex.py @@ -13,11 +13,13 @@ fichiers = os.listdir(REPERTOIRE_RESSOURCES) fichiers = sorted(fichiers) # tri par ordre alphabétique ressources = {"S1": [], "S2": []} +saes = {"S1": [], "S2": []} for file in fichiers: fichieryaml = REPERTOIRE_RESSOURCES + "/" + file - r = Ressource(fichieryaml) # lecture du fichier - sem = "S" + str(r.ressource["semestre"]) - ressources[sem].append(r) + if file.startswith("R"): # si c'est une ressources + r = Ressource(fichieryaml) # lecture du fichier + sem = "S" + str(r.ressource["semestre"]) + ressources[sem].append(r) r1 = ressources["S1"][0] r2 = ressources["S1"][1] @@ -35,10 +37,9 @@ print("ici") # Export latex for sem in ressources: for r in ressources[sem]: - if r.ressource["nom"] == "R112": - print("ici") + fichierlatex = REPERTOIRE_LATEX + "/" + "{}.tex".format(r.ressource["code"]) - contenu = r.str_to_latex() + contenu = r.to_latex() with open(fichierlatex, "w", encoding="utf8") as fid: fid.write(contenu) print(f"Export de {fichierlatex} ") \ No newline at end of file diff --git a/python/pn/modele_ressource.tex b/python/pn/modele_ressource.tex index 3a183c1..144d16e 100644 --- a/python/pn/modele_ressource.tex +++ b/python/pn/modele_ressource.tex @@ -4,18 +4,18 @@ \nouvelleressource{#code}{#nom} -\ajoutheures{#heures_formation}{#heures_tp} +\ajoutRheures{#heures_formation}{#heures_tp} %% Les compétences et les ACs -\ajoutcompetence{RT1-Administrer}{\niveauA} +\ajoutRcompetence{RT1-Administrer}{\niveauA} #compRT1 -\ajoutcompetence{RT2-Connecter}{\niveauA} +\ajoutRcompetence{RT2-Connecter}{\niveauA} #compRT2 -\ajoutcompetence{RT3-Programmer}{\niveauA} +\ajoutRcompetence{RT3-Programmer}{\niveauA} #compRT3 % Les SAE @@ -25,12 +25,12 @@ #prerequis % Le descriptif -\ajoutancrage{#contexte} +\ajoutRancrage{#contexte} % Contenus -\ajoutcontenudetaille{ +\ajoutRcontenudetaille{ #contenu } % Mots-clés -\ajoutmotscles{#motscles} +\ajoutRmotscles{#motscles} diff --git a/python/ressource.py b/python/ressource.py index a2f4ecb..67d9a68 100644 --- a/python/ressource.py +++ b/python/ressource.py @@ -21,7 +21,7 @@ class Ressource(): except: Ressource.__LOGGER.warning(f"Pb de chargement de {fichieryaml}") - def str_to_latex(self, modele="pn/modele_ressource.tex"): + def to_latex(self, modele="pn/modele_ressource.tex"): """Génère le code latex décrivant la ressource""" modlatex = get_modele(modele) #"pn/modele_ressource.tex") @@ -30,7 +30,7 @@ class Ressource(): print("ici") # Préparation des ac - ajoutac = "\\ajoutac{%s}{%s}" + ajoutac = "\\ajoutRac{%s}{%s}" compRT = [] for accomp in self.ressource["acs"]: comps = [] @@ -41,13 +41,13 @@ class Ressource(): compRT.append("\n".join(comps)) # Préparation des sae - ajoutsaes = "\\ajoutsae{%s}{%s}" + ajoutsaes = "\\ajoutRsae{%s}{%s}" saesRT = [] for (i, sae) in enumerate(self.ressource["sae"]): # in range(len(self.apprentissages)): saesRT.append(ajoutsaes % (sae, get_officiel_sae_name_by_code(sae))) saes = "\n".join(saesRT) - ajoutprerequis = "\\ajoutprerequis{%s}{%s}" + ajoutprerequis = "\\ajoutRprerequis{%s}{%s}" prerequis = "" if self.ressource["prerequis"] == "Aucun": prerequis = "" diff --git a/python/ressourcedocx.py b/python/ressourcedocx.py index 89d08e0..8aacea2 100644 --- a/python/ressourcedocx.py +++ b/python/ressourcedocx.py @@ -375,11 +375,19 @@ def convert_to_markdown(contenu): def nettoie_contenus_ressource(r): - # suppression des \t + """Partant du contenu détaillé d'une ressource, la transforme + en markdown en générant les listes à puces""" contenu = r.contenu.replace(" / ", "/") contenu = convert_to_markdown(contenu) r.contenu = contenu +def nettoie_livrables_sae(s): + """Partant du contenu détaillé d'une ressource, la transforme + en markdown en générant les listes à puces""" + contenu = s.livrables + contenu = convert_to_markdown(contenu) + s.livrables = contenu + class SAEDocx(): def __init__(self, nom, brut): @@ -400,6 +408,26 @@ class SAEDocx(): def charge_ac(self, apprentissages): self.apprentissages = apprentissages + def to_yaml(self): + """Exporte la ressource en yaml""" + dico = {"titre": self.nom, + "code": self.code, + "semestre": int(self.semestre[1]), + "heures_encadrees": self.heures_encadrees if self.heures_encadrees else "???", + "tp": self.tp if self.tp else "???", + "projet": self.projet if self.projet else "???", + "description": folded(self.description), + "acs": self.apprentissages, + "ressources": self.ressources, + "livrables": folded(self.livrables), + "motscles": self.mots if self.mots else "" + } + output = ruamel.yaml.dump(dico, Dumper=ruamel.yaml.RoundTripDumper, + allow_unicode=True, width=100) + output = output.replace("\n\n\n", "\n\n") + return output + + class ExempleSAEDocx(): def __init__(self, nom, brut): diff --git a/python/tools.py b/python/tools.py index 67d3dfc..e9e11f6 100644 --- a/python/tools.py +++ b/python/tools.py @@ -20,7 +20,9 @@ def get_indice_sans_accent_ni_espace(champ, entetes): def caracteres_recalcitrants(contenu): - contenu = contenu.replace("è", "è").replace("’", "'").replace("é", "é") + contenu = contenu.replace("è", "è").replace(b"\xe2\x80\x99".decode("utf8"), "'").replace("é", "é") + contenu = contenu.replace("’", "'") contenu = contenu.replace("â", "â").replace(b'a\xcc\x82'.decode("utf8"), "â") contenu = contenu.replace('\xa0', ' ') # le nbsp + return contenu \ No newline at end of file