+ {% include "navigation.html" %}
+ {% endblock %}
+""")
+
+# Template de chaque pages de ACs (doit contenir data, precedent, suivant)
+template_AC = env.from_string("""
+ {% extends "base.html" %}
+ {% block title %}{{data["ac"]}}{% endblock %}
+ {% block content %}
+ {% include "navigation.html" %}
+
+
{{data["ac"]}}
+
{{data["titre"]}}
+
+ {% include "navigation.html" %}
+ {% endblock %}
+""")
+
# Template de la liste des ressources par semestre (doit contenir data,sem)
template_List_Ressource = env.from_string("""
{% extends "base.html" %}
@@ -244,7 +275,7 @@ def formatHTML(string):
phrases = list(filter(None,string.split("\n")))
i = 0
while i < len(phrases):
- if "*" in phrases[i]: # première balise li détecté
+ if "* " in phrases[i]: # première balise li détecté
texte += "
\n" # \n permet d'améliorer la lisibilité dans les fichiers html
while i < len(phrases) and "*" in phrases[i]: # Tant qu'il y a des * on continue de créer des balises
texte += "
" + phrases[i][2:] + "
\n"
@@ -338,3 +369,28 @@ for indexSem, sem in enumerate(ressources):
if(j < len(exemples[sem][sae]) - 1): datas["suivant"] = "SAE" + data["code"][-2:] + "_exemple" + str(i+1) + ".html"
template.stream(datas).dump(REPERTOIRE_HTML + "/" + data["code"].replace("É","E") + "_exemple" + str(i) + ".html")
i+=1
+
+# Création des pages individuelles ACs, Compétences
+for indexRt, rt in enumerate(acs.getInfo()):
+
+ # ACs
+ for i, (ac, desc) in enumerate(acs.getInfo()[rt].items()):
+ data = {}
+ data["ac"] = ac
+ data["titre"] = desc
+ datas = {"data":data}
+ if i > 0: datas["precedent"] = list(acs.getInfo()[rt].keys())[i-1] + ".html"
+ elif indexRt > 0: datas["precedent"] = list(acs.getInfo()["RT" + str(int(rt[-1])-1)].keys())[-1] + ".html"
+ if i < len(acs.getInfo()[rt])-1: datas["suivant"] = list(acs.getInfo()[rt].keys())[i+1] + ".html"
+ elif indexRt < len(acs.getInfo())-1: datas["suivant"] = list(acs.getInfo()["RT" + str(int(rt[-1])+1)].keys())[0] + ".html"
+ template_AC.stream(datas).dump(REPERTOIRE_HTML + "/" + ac + ".html")
+
+ # Compétences
+ data = {}
+ for categorie, valeur in competences.getInfo()[rt].items():
+ data[categorie] = valeur
+ data["description"] = formatHTML(data["description"])
+ datas = {"data": data, "rt": rt}
+ if indexRt > 0: datas["precedent"] = "RT" + str(indexRt) + ".html"
+ if indexRt <= len(competences.getInfo()): datas["suivant"] = "RT" + str(indexRt + 2) + ".html"
+ template_Competence.stream(datas).dump(REPERTOIRE_HTML + "/" + rt + ".html")
\ No newline at end of file
diff --git a/python/ressource.py b/python/ressource.py
index 5737324..213a341 100644
--- a/python/ressource.py
+++ b/python/ressource.py
@@ -394,6 +394,37 @@ class ExempleSAE:
return chaine
+class Competences:
+ """ Modélise une liste de compétences lorsqu'elle est extraite d'un dictionnaire """
+
+ __LOGGER = logging.getLogger(__name__)
+
+ def __init__(self, fichieryaml):
+ with open(fichieryaml, "r", encoding="utf8") as fid:
+ yaml = ruamel.yaml.YAML()
+ try:
+ self.competences = yaml.load(fid.read())
+ except:
+ Competences.__LOGGER.warning(f"Pb de chargement de {fichieryaml}")
+
+ def getInfo(self):
+ return self.competences
+
+class ACs:
+ """ Modélise une liste de acs lorsqu'elle est extraite d'un fichier yaml """
+
+ __LOGGER = logging.getLogger(__name__)
+
+ def __init__(self, fichieryaml):
+ with open(fichieryaml, "r", encoding="utf8") as fid:
+ yaml = ruamel.yaml.YAML(typ="safe")
+ try:
+ self.acs = yaml.load(fid.read())
+ except:
+ ACs.__LOGGER.warning(f"Pb de chargement de {fichieryaml}")
+
+ def getInfo(self):
+ return self.acs
def md_to_latex(contenu):
"""Réalise la conversion markdown to latex avec pypandoc"""