Ajoute pré-requis de lycée + nettoyage du contexte (avec détection de listes à puces)

This commit is contained in:
Cléo Baras 2021-04-12 11:32:09 +02:00
parent 12ec264e7e
commit 4fb8649071
16 changed files with 166 additions and 125 deletions

View File

@ -150,6 +150,13 @@
% **************************** % ****************************
% Ajout des prerequis % Ajout des prerequis
%% pré-requis autre qu'une ressource (ex: A2-B1 en anglais)
\def\ajoutRprerequislycee#1{
\begingroup\let\+\relax
\expandafter\gdef\csname Rprerequislycee\currentRressource\endcsname{#1} % descriptif
\endgroup
}
\def\ajoutRprerequis#1#2{ \def\ajoutRprerequis#1#2{
\addtocounter{cptRprerequis\currentRressource}{1} % le compteur du prerequis dans la ressource \addtocounter{cptRprerequis\currentRressource}{1} % le compteur du prerequis dans la ressource
\xdef\currentprerequis{\Alph{cptRprerequis\currentRressource}} % La lettre \xdef\currentprerequis{\Alph{cptRprerequis\currentRressource}} % La lettre

View File

@ -67,18 +67,23 @@
% Liste des pré-requis % Liste des pré-requis
\newcommand*{\listePrerequis}[1]{% \newcommand*{\listePrerequis}[1]{%
\xdef\CODE{#1} % le code de la ressource sous la forme AA \xdef\CODE{#1} % le code de la ressource sous la forme AA
\ifthenelse{\equal{\value{cptRprerequis\CODE}}{0}}{ % Si pas de prérequis \ifcsdef{Rprerequislycee\CODE}{ % si pre-requis simple
Aucun {\csname Rprerequislycee\CODE\endcsname}
}{ % Si des pré-requis }
\begin{tabular}[t]{@{}T@{}}% {
\ifthenelse{\equal{\value{cptRprerequis\CODE}}{0}}{ % Si pas de prérequis
Aucun
}{ % Si des pré-requis
\begin{tabular}[t]{@{}T@{}}%
\forLoop{1}{\value{cptRprerequis\CODE}}{noligne}{ \forLoop{1}{\value{cptRprerequis\CODE}}{noligne}{
\xdef\rescode{\csname Rprerequiscode\CODE\Alph{noligne}\endcsname} \xdef\rescode{\csname Rprerequiscode\CODE\Alph{noligne}\endcsname}
\hyperlink{res:\rescode}{\textcolor{ressourceC}{\rescode}} {\csname Rprerequisname\CODE\Alph{noligne}\endcsname} \hyperlink{res:\rescode}{\textcolor{ressourceC}{\rescode}} {\csname Rprerequisname\CODE\Alph{noligne}\endcsname}
\tabularnewline % \tabularnewline %
} }
\end{tabular}% \end{tabular}%
} }
}
}% }%

View File

@ -153,6 +153,8 @@ Document de travail formulant les propositions de l'ACD R\&T pour l'ensemble de
\end{center} \end{center}
\clearpage \clearpage
\RprerequislyceeAJ
% ------ TABLE DES MATIERES (en version draft seulement) % ------ TABLE DES MATIERES (en version draft seulement)
%\ifdef{\draft}{ %\ifdef{\draft}{
%\section*{Table des matières} %\section*{Table des matières}

View File

@ -32,14 +32,21 @@
\ajoutRsae{SAÉ15}{Traiter des données} \ajoutRsae{SAÉ15}{Traiter des données}
% Les pre-requis % Les pre-requis
\ajoutRprerequislycee{A2-B1}
% Le descriptif % Le descriptif
\ajoutRancrage{} \ajoutRancrage{Cette ressource apporte le socle de connaissances langagières pour les
compétences de cœur de métier \og Administrer les réseaux et
l'Internet\fg{} (RT1) et \og Connecter les entreprises et les
usagers\fg{} (RT2). Elle contribue aussi à la compétence \og Créer des
outils et applications informatiques pour les R\&T\fg{} (RT3) à travers
des mises en situations, jeux de rôle, dialogues qui permettent la prise
de parole en continu et en interaction, en développant les compétences
de compréhension dans un contexte professionnel technique.}
% Contenus % Contenus
\ajoutRcontenudetaille{ \ajoutRcontenudetaille{
Objectifs visés \vspace{-5pt}
\begin{itemize} \begin{itemize}
\item \item
Développer sa confiance en soi Développer sa confiance en soi

View File

@ -31,11 +31,8 @@
% Le descriptif % Le descriptif
\ajoutRancrage{} \ajoutRancrage{Le Projet Personnel et Professionnel des semestres 1 et 2 de la première
année de B.U.T. permet à l'étudiant :
% Contenus
\ajoutRcontenudetaille{
\vspace{-5pt}
\begin{itemize} \begin{itemize}
\item \item
s'approprier son champ d'activité ; s'approprier son champ d'activité ;
@ -59,10 +56,12 @@
d'avoir une compréhension exhaustive du référentiel de compétences de d'avoir une compréhension exhaustive du référentiel de compétences de
la formation et des éléments la formation et des éléments
le structurant (composantes essentielles, niveaux, apprentissages le structurant (composantes essentielles, niveaux, apprentissages
critiques, famille de situations) critiques, famille de situations).
; \end{itemize}}
\end{itemize}
Activités notamment proposées dans cette ressource : % Contenus
\ajoutRcontenudetaille{
Les activités pouvant être proposées dans cette ressource sont :
\begin{itemize} \begin{itemize}
\item \item
rencontres d'entrepreneurs, de chefs de service, de techniciens et rencontres d'entrepreneurs, de chefs de service, de techniciens et

View File

@ -49,34 +49,34 @@ Dans le cadre de cette ressource transversale, l'étudiant devra :
Utilisation avancée du courriel : création d'une adresse générique, Utilisation avancée du courriel : création d'une adresse générique,
utilisation du \textabbrv{CC} et du \textabbrv{CCi}. utilisation du \textabbrv{CC} et du \textabbrv{CCi}.
\item \item
Utilisation d'outils collaboratifs adaptés (par ex : Mattermost, Utilisation d'outils collaboratifs adaptés (par exemple Mattermost,
Slack, MSTeams, Google Drive, Slack, MSTeams, Google Drive,
OnlyOffice) OnlyOffice).
\end{itemize} \end{itemize}
\item \item
Organiser son travail et celui de l'équipe à partir d'outils de Organiser son travail et celui de l'équipe à partir d'outils de
planification (Gantt, \textabbrv{PERT}) planification (Gantt, \textabbrv{PERT}).
\item \item
Prendre sa place dans une équipe en connaissant les différents rôles Prendre sa place dans une équipe en connaissant les différents rôles
d'une équipe projet d'une équipe projet.
\item \item
Conceptualiser les étapes des tâches à réaliser à l'aide d'outils Conceptualiser les étapes des tâches à réaliser à l'aide d'outils
adaptés (cartes mentales, infographies, adaptés (cartes mentales, infographies,
etc.) etc.).
\item \item
Prendre conscience des délais et échéances dans un travail en mode Prendre conscience des délais et échéances dans un travail en mode
projet projet.
\item \item
Savoir s'adapter à des profils professionnels différents (manager, Savoir s'adapter à des profils professionnels différents (manager,
collaborateur, client) qui interviennent collaborateur, client) qui interviennent
dans un projet dans un projet.
\item \item
Apprendre à faire un bilan régulier sur l'avancée d'un projet : points Apprendre à faire un bilan régulier sur l'avancée d'un projet : points
bloquants, solutions apportées bloquants, solutions apportées.
\item \item
Appliquer la critique constructive dans l'intérêt du projet Appliquer la critique constructive dans l'intérêt du projet
\item \item
Organiser des réunions de projet Organiser des réunions de projet.
\item \item
Présenter un projet selon ses spécificités et le public visé. Présenter un projet selon ses spécificités et le public visé.
\end{itemize} \end{itemize}

View File

@ -37,16 +37,16 @@
% Le descriptif % Le descriptif
\ajoutRancrage{Cette ressource apporte le socle de connaissances et savoirs-faire pour \ajoutRancrage{Cette ressource apporte le socle de connaissances et savoirs-faire pour
les compétences de cœur de métier \og Administrer les réseaux et les compétences de cœur de métier ``Administrer les réseaux et
l'Internet\fg{} (RT1) et \og Connecter les entreprises et les l'Internet'' (RT1) et ``Connecter les entreprises et les usagers''
usagers\fg{} (RT2). Elle vise à fournir à l'étudiant les connaissances (RT2). Elle vise à fournir à l'étudiant les connaissances et les
et les compétences indispensables pour pouvoir concevoir, déployer et compétences indispensables pour pouvoir concevoir, déployer et maintenir
maintenir les infrastructures réseaux grande distance (Internet), plus les infrastructures réseaux grande distance (Internet), plus précisément
précisément l'adressage, le routage et le transport de paquets. Une l'adressage, le routage et le transport de paquets. Une première
première approche du filtrage (sécurité) y est aussi abordée.\\ approche du filtrage (sécurité) y est aussi abordée.\\
Elle contribue aussi à la compétence \og Créer des outils et Elle contribue aussi à la compétence ``Créer des outils et applications
applications informatiques pour les R\&T\fg{} (RT3) à travers la informatiques pour les R\&T'' (RT3) à travers la découverte du poste
découverte du poste client et de son environnement logiciel.\\ client et de son environnement logiciel.\\
On introduira des notions de sécurité informatique (les ressources On introduira des notions de sécurité informatique (les ressources
associées aux recommandations de l'\textabbrv{ANSSI}, CyberEdu, CyberMalveillance associées aux recommandations de l'\textabbrv{ANSSI}, CyberEdu, CyberMalveillance
pourront servir de support)} pourront servir de support)}
@ -69,4 +69,4 @@ pourront servir de support)}
} }
% Mots-clés % Mots-clés
\ajoutRmotscles{Plan d'adressage, routage état de lien, stratégies de filtrage, \textabbrv{CIDR}, \textabbrv{VLSM}, agrégation de routes, \textabbrv{IP}v6, \textabbrv{NDP}.} \ajoutRmotscles{Plan d'adressage, Routage état de lien, Stratégies de filtrage, \textabbrv{CIDR}, \textabbrv{VLSM}, Agrégation de routes, \textabbrv{IP}v6, \textabbrv{NDP}.}

View File

@ -38,32 +38,32 @@
% Le descriptif % Le descriptif
\ajoutRancrage{Cette ressource apporte le socle de connaissances et savoir-faire pour \ajoutRancrage{Cette ressource apporte le socle de connaissances et savoir-faire pour
les compétences de cœur de métier \og Administrer les réseaux et les compétences de cœur de métier ``Administrer les réseaux et
l'Internet\fg{} (RT1). Elle donne aux étudiants les compétences pour l'Internet'' (RT1). Elle donne aux étudiants les compétences pour
effectuer des tâches simples d'administration du système d'information effectuer des tâches simples d'administration du système d'information
de l'entreprise (processus, utilisateurs, automatisation) et pour de l'entreprise (processus, utilisateurs, automatisation) et pour
utiliser des solutions de virtualisation, de conteneurisation.\\ utiliser des solutions de virtualisation, de conteneurisation.\\
Elle contribue aussi à la compétence \og Créer des outils et Elle contribue aussi à la compétence ``Créer des outils et applications
applications informatiques pour les R\&T\fg{} (RT3) à travers la informatiques pour les R\&T'' (RT3) à travers la découverte du poste
découverte du poste client et de son environnement logiciel.} client et de son environnement logiciel.}
% Contenus % Contenus
\ajoutRcontenudetaille{ \ajoutRcontenudetaille{
\vspace{-5pt} \vspace{-5pt}
\begin{itemize} \begin{itemize}
\item \item
Gestion des systèmes de fichiers (volumes, droits, types de fichiers) Gestion des systèmes de fichiers (volumes, droits, types de fichiers).
\item \item
Gestion de processus et services Gestion de processus et services.
\item \item
Gestion de ressources utilisateurs (comptes, quotas) Gestion de ressources utilisateurs (comptes, quotas).
\item \item
Scripts pour l'automatisation de séquences de commandes Scripts pour l'automatisation de séquences de commandes.
\item \item
Utilisation de fichiers de traces (logs) Utilisation de fichiers de traces (logs).
\item \item
Initiation et mise en oeuvre d'infrastructures de virtualisation et/ou Initiation et mise en oeuvre d'infrastructures de virtualisation et/ou
de conteneurisation de conteneurisation.
\end{itemize} \end{itemize}
} }

View File

@ -39,12 +39,12 @@
\ajoutRancrage{Cette ressource apporte les connaissances et compétences de base \ajoutRancrage{Cette ressource apporte les connaissances et compétences de base
nécessaires à la mise en oeuvre des services réseaux dans un système nécessaires à la mise en oeuvre des services réseaux dans un système
d'information\\ d'information\\
Les services abordés sont des services essentiels à tout SI tels que le Les services abordés sont des services essentiels à tout système
\textabbrv{DNS}, le \textabbrv{DHCP} ou le transfert de fichiers pour les configurations d'information tels que le \textabbrv{DNS}, le \textabbrv{DHCP} ou le transfert de fichiers pour
d'appareils réseaux pour n'en citer que quelques-uns. Cette découverte les configurations d'appareils réseaux pour n'en citer que quelques-uns.
des premiers protocoles applicatifs permettra également de sensibiliser Cette découverte des premiers protocoles applicatifs permettra également
les étudiants aux risques de sécurité liés à la configuration de ces de sensibiliser les étudiants aux risques de sécurité liés à la
services\\ configuration de ces services\\
On introduira des notions de sécurité informatique (les ressources On introduira des notions de sécurité informatique (les ressources
associées aux recommandations de l'\textabbrv{ANSSI}, CyberEdu, CyberMalveillance associées aux recommandations de l'\textabbrv{ANSSI}, CyberEdu, CyberMalveillance
pourront servir de support).} pourront servir de support).}
@ -54,23 +54,25 @@ pourront servir de support).}
\vspace{-5pt} \vspace{-5pt}
\begin{itemize} \begin{itemize}
\item \item
Rappels sur les protocoles de transport (\textabbrv{TCP}, \textabbrv{UDP}) Rappels sur les protocoles de transport (\textabbrv{TCP}, \textabbrv{UDP}).
\item \item
Utilisation de ssh pour l'accès distant Utilisation de ssh pour l'accès distant.
\item \item
Principe, installation, configuration et tests des services : Principe, installation, configuration et tests des services :
\item \begin{itemize}
\textabbrv{DHCP} \item
\item \textabbrv{DHCP};
\textabbrv{DNS} (fonctions de base) \item
\item \textabbrv{DNS} (fonctions de base);
\textabbrv{HTTP} \item
\item \textabbrv{HTTP};
\textabbrv{TFTP}, \textabbrv{FTP} \item
\item \textabbrv{TFTP}, \textabbrv{FTP};
\textabbrv{NTP} \item
\textabbrv{NTP}.
\end{itemize}
\end{itemize} \end{itemize}
} }
% Mots-clés % Mots-clés
\ajoutRmotscles{Protocoles et ports applicatifs, services, systèmes d'exploitation.} \ajoutRmotscles{Protocoles et ports applicatifs, Services, Systèmes d'exploitation.}

View File

@ -72,4 +72,4 @@ informatique.
} }
% Mots-clés % Mots-clés
\ajoutRmotscles{\textabbrv{IPBX}, \textabbrv{PABX}, \textabbrv{TDM}/\textabbrv{IP}, Postes et services téléphoniques, Visiophonie, Plan de numérotation, Réseaux téléphoniques publics.} \ajoutRmotscles{\textabbrv{IPBX}, \textabbrv{PABX}, \textabbrv{TDM}/\textabbrv{IP}, postes et services téléphoniques, visiophonie, plan de numérotation, réseaux téléphoniques publics.}

View File

@ -40,15 +40,15 @@
% Le descriptif % Le descriptif
\ajoutRancrage{Le professionnel R\&T traite un grand nombre de données (par ex: \ajoutRancrage{Le professionnel R\&T traite un grand nombre de données (par ex:
l'annuaire des utilisateurs du réseau ou l'état des équipements l'annuaire des utilisateurs du réseau ou l'état des équipements
informatiques). Elles peuvent servir à configurer et à administrer les informatiques). Elles peuvent servir à configurer ou à administrer les
services réseau d'une entreprise (RT1) ou à alimenter les pages d'un services réseau d'une entreprise (RT1) ou à alimenter les pages d'un
site Web (RT3). Il est donc amené à stocker, organiser, gérer, protéger site Web (RT3). Il est donc amené à stocker, organiser, gérer, protéger
des données provenant de différentes sources (thématiques du PIX, des données provenant de différentes sources (thématiques du
cf.~\url{https://pix.fr/competences}), mais aussi à les traiter en \href{https://pix.fr/competences}{PIX}), mais aussi à les traiter en
développant différents outils informatiques pour ses besoins personnels développant différents outils informatiques pour ses besoins personnels
ou pour son équipe (RT3). Plus largement, il contribue activement à ou pour son équipe (RT3). Plus largement, il contribue activement à
l'exploitation et à la maintenance du système d'information de l' l'exploitation et à la maintenance du système d'information de
entreprise.\\ l'entreprise.\\
Cette ressource introduit les éléments fondamentaux des systèmes de Cette ressource introduit les éléments fondamentaux des systèmes de
gestion de base de données. Elle présente différentes alternatives gestion de base de données. Elle présente différentes alternatives
technologiques pour le stockage et le codage de l'information, en technologiques pour le stockage et le codage de l'information, en
@ -63,12 +63,12 @@ langages et des scripts spécifiques qui seront introduits.}
Stockage et accès aux données : Stockage et accès aux données :
\begin{itemize} \begin{itemize}
\item \item
système de gestion de données (relationnel/non relationnel); Système de gestion de données (relationnel/non relationnel);
\item \item
structuration des données: fichiers (\textabbrv{CSV}, \textabbrv{JSON}), exemples de sources Structuration des données: fichiers (\textabbrv{CSV}, \textabbrv{JSON}), exemples de sources
ouvertes (open data), web scraping; ouvertes (\emph{open data}), \emph{web scraping};
\item \item
sensibilisation à la réglementation française et internationale Sensibilisation à la réglementation française et internationale
(\textabbrv{CNIL}, \textabbrv{RGPD}). (\textabbrv{CNIL}, \textabbrv{RGPD}).
\end{itemize} \end{itemize}
\item \item

View File

@ -37,15 +37,14 @@
% Le descriptif % Le descriptif
\ajoutRancrage{Le professionnel R\&T est amené à développer différents outils \ajoutRancrage{Le professionnel R\&T est amené à développer différents outils
informatiques à usage personnel ou interne à l'équipe (compétence informatiques à usage personnel ou interne à l'équipe (RT3). Ces outils
RT3-Programmer). Ces outils peuvent traiter des données complexes, viser peuvent traiter des données complexes, viser des fonctionnalités
des fonctionnalités multiples et être développé en équipe : il est alors multiples et être développé en équipe : il est alors nécessaire - pour
nécessaire - pour le professionnel R\&T - de structurer son travail, le professionnel R\&T - de structurer son travail, tant sur les
tant sur les variables manipulant les données, les fichiers qui les variables manipulant les données, les fichiers qui les sauvegardent ou
sauvegardent ou les restaurent, que sur l'organisation (arborescence) de les restaurent, que sur l'organisation (arborescence) de son projet. La
son projet. La ressource introduit ses éléments structurels en ressource introduit ses éléments structurels en contribuant à
contribuant à l'acquisition des apprentissages critiques mentionnés l'acquisition des apprentissages critiques mentionnés précédemment.}
précédemment.}
% Contenus % Contenus
\ajoutRcontenudetaille{ \ajoutRcontenudetaille{
@ -53,35 +52,35 @@ précédemment.}
\begin{itemize} \begin{itemize}
\item \item
Structure d'un programme : arborescence de fichiers, modules et Structure d'un programme : arborescence de fichiers, modules et
packages packages.
\item \item
Contexte d'exécution : programme principal vs script Contexte d'exécution : programme principal \emph{vs} script.
\item \item
Structure complexe de données : Structure complexe de données :
\begin{itemize} \begin{itemize}
\item \item
listes \textabbrv{2D}, tableaux associatifs/dictionnaires Listes \textabbrv{2D}, tableaux associatifs/dictionnaires;
\item \item
notion de classes (instance, attributs, méthodes) Notion de classes (instance, attributs, méthodes).
\end{itemize} \end{itemize}
\item \item
Manipulation de fichiers avancée : Manipulation de fichiers avancée :
\begin{itemize} \begin{itemize}
\item \item
fichiers structurés (\textabbrv{XML}, \textabbrv{CSV}, \textabbrv{JSON}, YAML) Fichiers structurés (\textabbrv{XML}, \textabbrv{CSV}, \textabbrv{JSON}, YAML);
\item \item
gestion de l'arborescence par le code Gestion de l'arborescence par le code;
\item \item
lecture/écriture de fichiers structurés Lecture/écriture de fichiers structurés;
\item \item
notion de sérialisation Notion de sérialisation;
\item \item
notion de persistance des données Notion de persistance des données.
\end{itemize} \end{itemize}
\item \item
Initiation aux expressions régulières Initiation aux expressions régulières.
\item \item
Introduction au traitement des erreurs Introduction au traitement des erreurs.
\end{itemize} \end{itemize}
L'utilisation de l'anglais est préconisée dans la documentation du code. L'utilisation de l'anglais est préconisée dans la documentation du code.
} }

View File

@ -1,6 +1,8 @@
import os import os
import glob
import argparse import argparse
import logging import logging
import sys
from config import Config from config import Config
@ -36,8 +38,8 @@ REPERTOIRE_SYNTHESE = Config.ROOT + "/latex/synthese"
# Chargement des ressources : depuis les versions définitives du répertoire yaml d'abord, # Chargement des ressources : depuis les versions définitives du répertoire yaml d'abord,
# puis dans python/export si manquantes # puis dans python/export si manquantes
fichiers_definitifs = os.listdir(REPERTOIRE_RESSOURCES_DEFINITIVES) fichiers_definitifs = [ os.path.split(x)[1] for x in glob.glob(REPERTOIRE_RESSOURCES_DEFINITIVES+'/*.yml') ]
fichiers_temp = os.listdir(REPERTOIRE_TEMP) fichiers_temp = [ os.path.split(x)[1] for x in glob.glob(REPERTOIRE_TEMP+'/*.yml') ]
fichiers_ressources = [REPERTOIRE_RESSOURCES_DEFINITIVES + "/" + f for f in fichiers_definitifs] fichiers_ressources = [REPERTOIRE_RESSOURCES_DEFINITIVES + "/" + f for f in fichiers_definitifs]
for f in fichiers_temp: for f in fichiers_temp:
if f not in fichiers_definitifs and f.startswith("R"): if f not in fichiers_definitifs and f.startswith("R"):

View File

@ -21,6 +21,8 @@ with open(Config.ROOT+"/yaml/competences/RT123.yml", 'r', encoding="utf8") as fi
with open(Config.ROOT+"/yaml/abbreviations.yml", "r", encoding="utf8") as fid: with open(Config.ROOT+"/yaml/abbreviations.yml", "r", encoding="utf8") as fid:
DATA_ABBREVIATIONS = yaml.load(fid.read(), Loader=yaml.Loader) DATA_ABBREVIATIONS = yaml.load(fid.read(), Loader=yaml.Loader)
AUCUN_PREREQUIS = "Aucun"
def supprime_accent_espace(chaine): def supprime_accent_espace(chaine):
"""Met en minuscule, supprime les accents, les ponctuations et les espaces""" """Met en minuscule, supprime les accents, les ponctuations et les espaces"""
purge = chaine.lower().replace("'", "").replace("", "") purge = chaine.lower().replace("'", "").replace("", "")

View File

@ -70,17 +70,23 @@ class Ressource:
) # , code_latex)) ) # , code_latex))
saes = "\n".join(saesRT) saes = "\n".join(saesRT)
ajoutprerequis = "\\ajoutRprerequis{%s}{%s}" if self.ressource["code"] == "R110":
print("ici")
prerequis = "" prerequis = ""
if self.ressource["prerequis"] == "Aucun": if self.ressource["prerequis"] == AUCUN_PREREQUIS:
prerequis = "" prerequis = ""
else: else:
liste = [] # est-une liste de ressources
for (no, mod) in enumerate(self.ressource["prerequis"]): if not self.ressource["prerequis"][0].startswith("R"):
liste.append( prerequis = "\\ajoutRprerequislycee{%s}" % (self.ressource["prerequis"])
ajoutprerequis % (mod, get_officiel_ressource_name_by_code(mod)) else:
) ajoutprerequis = "\\ajoutRprerequis{%s}{%s}"
prerequis = "\n".join(liste) liste = []
for (no, mod) in enumerate(self.ressource["prerequis"]):
liste.append(
ajoutprerequis % (mod, get_officiel_ressource_name_by_code(mod))
)
prerequis = "\n".join(liste)
# préparation du contexte # préparation du contexte
contexte = self.ressource["contexte"] contexte = self.ressource["contexte"]

View File

@ -5,7 +5,6 @@ from officiel import supprime_accent_espace, get_code_from_nom_using_dict
import ruamel.yaml import ruamel.yaml
from ruamel.yaml.scalarstring import FoldedScalarString as folded from ruamel.yaml.scalarstring import FoldedScalarString as folded
from tools import caracteres_recalcitrants
__LOGGER = logging.getLogger(__name__) __LOGGER = logging.getLogger(__name__)
@ -15,6 +14,7 @@ class Docx():
def __init__(self, nom, brut): def __init__(self, nom, brut):
self.nom = nom self.nom = nom
self.code = None # chargé ultérieurement
self.brut = brut # les données brutes de la ressource/saé self.brut = brut # les données brutes de la ressource/saé
self.semestre = None # le semestre de la ressource/saé (chargé ultérieurement) self.semestre = None # le semestre de la ressource/saé (chargé ultérieurement)
self.apprentissages = None # les acs (chargés ultérieurement) self.apprentissages = None # les acs (chargés ultérieurement)
@ -129,8 +129,6 @@ class Docx():
avec_marqueur = False avec_marqueur = False
last_marqueur = 0 last_marqueur = 0
for (i, ligne) in enumerate(lignes): for (i, ligne) in enumerate(lignes):
if "dAPI" in ligne:
print("ici")
ligne = ligne.replace("\t", " "*2) ligne = ligne.replace("\t", " "*2)
if " *" in ligne and avec_marqueur == False: if " *" in ligne and avec_marqueur == False:
avec_marqueur = True avec_marqueur = True
@ -207,10 +205,12 @@ class RessourceDocx(Docx):
def nettoie_prerequis(self): def nettoie_prerequis(self):
"""Nettoie les prérequis""" """Nettoie les prérequis"""
if self.prerequis: if not self.prerequis or AUCUN_PREREQUIS.lower() in self.prerequis.lower():
self.prerequis = nettoie_liste_ressources(self.prerequis) self.prerequis = AUCUN_PREREQUIS
if not self.prerequis: else:
self.prerequis = "Aucun" ressources = nettoie_liste_ressources(self.prerequis)
if ressources:
self.prerequis = ressources
def nettoie_sae(self): def nettoie_sae(self):
"""Nettoie le champ SAe d'une ressource en détectant les codes""" """Nettoie le champ SAe d'une ressource en détectant les codes"""
@ -224,7 +224,7 @@ class RessourceDocx(Docx):
"""Nettoie le champ (horaire) (de la forme 46h ou 33...) pour en extraire la valeur numérique : """Nettoie le champ (horaire) (de la forme 46h ou 33...) pour en extraire la valeur numérique :
le champ peut contenir 2 volumes (heures formation puis heures tp), auquel cas les 2 valeurs sont renvoyées le champ peut contenir 2 volumes (heures formation puis heures tp), auquel cas les 2 valeurs sont renvoyées
dans un tuple""" dans un tuple"""
volumes = None
if self.heures_encadrees: # si les heures encadrées sont renseignées if self.heures_encadrees: # si les heures encadrées sont renseignées
volumes = nettoie_champ_heure(self.heures_encadrees) volumes = nettoie_champ_heure(self.heures_encadrees)
if self.tp: if self.tp:
@ -252,8 +252,13 @@ class RessourceDocx(Docx):
indicec = 0 indicec = 0
contexte = [] contexte = []
if True in [ligne.startswith("Contenus") for ligne in champs]: # la ligne commençant par Contenus marqueur = False
indicec = [ligne.startswith("Contenus") for ligne in champs].index(True) identifiants = ["Contenus", "Objectifs visés"] # Identifiant marquant la ligne des contenus
for id in identifiants:
presence = [ligne.startswith(id) for ligne in champs]
if True in presence and not marqueur: # la ligne commençant par l'identifiant
indicec = presence.index(True)
marqueur = True
if True in [ligne.startswith("Contexte et ") for ligne in champs]: if True in [ligne.startswith("Contexte et ") for ligne in champs]:
contexte = champs[indicea + 1:indicec] contexte = champs[indicea + 1:indicec]
else: else:
@ -276,6 +281,12 @@ class RessourceDocx(Docx):
contenu = self.contenu.replace(" / ", "/") contenu = self.contenu.replace(" / ", "/")
self.contenu = convert_to_markdown(contenu) self.contenu = convert_to_markdown(contenu)
def nettoie_contexte(self):
"""Partant du contexte détaillé d'une ressource, la transforme
en markdown en générant les listes à puces"""
contexte = self.contexte.replace(" / ", "/")
self.contexte = convert_to_markdown(contexte)
def nettoie_champ(self): def nettoie_champ(self):
"""Lance le nettoyage des champs""" """Lance le nettoyage des champs"""
self.nettoie_code() self.nettoie_code()
@ -291,6 +302,7 @@ class RessourceDocx(Docx):
# Remet en forme le descriptif # Remet en forme le descriptif
self.split_description() self.split_description()
self.nettoie_contexte()
self.nettoie_contenu() self.nettoie_contenu()
print(f"{self.code} {self.semestre}") print(f"{self.code} {self.semestre}")
@ -543,8 +555,6 @@ class SAEDocx(Docx):
def nettoie_ressources(self): def nettoie_ressources(self):
"""Nettoie le champ ressource d'une sae en détectant les codes""" """Nettoie le champ ressource d'une sae en détectant les codes"""
if "24" in self.code:
print("ici")
self.ressources = nettoie_liste_ressources(self.ressources) self.ressources = nettoie_liste_ressources(self.ressources)
if not self.ressources: if not self.ressources:
SAEDocx.__LOGGER.warning(f"nettoie_ressources: dans {self.nom} pas de ressources (:") SAEDocx.__LOGGER.warning(f"nettoie_ressources: dans {self.nom} pas de ressources (:")