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
%% 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{
\addtocounter{cptRprerequis\currentRressource}{1} % le compteur du prerequis dans la ressource
\xdef\currentprerequis{\Alph{cptRprerequis\currentRressource}} % La lettre

View File

@ -67,18 +67,23 @@
% Liste des pré-requis
\newcommand*{\listePrerequis}[1]{%
\xdef\CODE{#1} % le code de la ressource sous la forme AA
\ifthenelse{\equal{\value{cptRprerequis\CODE}}{0}}{ % Si pas de prérequis
Aucun
}{ % Si des pré-requis
\begin{tabular}[t]{@{}T@{}}%
\ifcsdef{Rprerequislycee\CODE}{ % si pre-requis simple
{\csname Rprerequislycee\CODE\endcsname}
}
{
\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}{
\xdef\rescode{\csname Rprerequiscode\CODE\Alph{noligne}\endcsname}
\hyperlink{res:\rescode}{\textcolor{ressourceC}{\rescode}} {\csname Rprerequisname\CODE\Alph{noligne}\endcsname}
\tabularnewline %
}
\end{tabular}%
}
\forLoop{1}{\value{cptRprerequis\CODE}}{noligne}{
\xdef\rescode{\csname Rprerequiscode\CODE\Alph{noligne}\endcsname}
\hyperlink{res:\rescode}{\textcolor{ressourceC}{\rescode}} {\csname Rprerequisname\CODE\Alph{noligne}\endcsname}
\tabularnewline %
}
\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}
\clearpage
\RprerequislyceeAJ
% ------ TABLE DES MATIERES (en version draft seulement)
%\ifdef{\draft}{
%\section*{Table des matières}

View File

@ -32,14 +32,21 @@
\ajoutRsae{SAÉ15}{Traiter des données}
% Les pre-requis
\ajoutRprerequislycee{A2-B1}
% 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
\ajoutRcontenudetaille{
Objectifs visés
\vspace{-5pt}
\begin{itemize}
\item
Développer sa confiance en soi

View File

@ -31,11 +31,8 @@
% Le descriptif
\ajoutRancrage{}
% Contenus
\ajoutRcontenudetaille{
\vspace{-5pt}
\ajoutRancrage{Le Projet Personnel et Professionnel des semestres 1 et 2 de la première
année de B.U.T. permet à l'étudiant :
\begin{itemize}
\item
s'approprier son champ d'activité ;
@ -59,10 +56,12 @@
d'avoir une compréhension exhaustive du référentiel de compétences de
la formation et des éléments
le structurant (composantes essentielles, niveaux, apprentissages
critiques, famille de situations)
;
\end{itemize}
Activités notamment proposées dans cette ressource :
critiques, famille de situations).
\end{itemize}}
% Contenus
\ajoutRcontenudetaille{
Les activités pouvant être proposées dans cette ressource sont :
\begin{itemize}
\item
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 du \textabbrv{CC} et du \textabbrv{CCi}.
\item
Utilisation d'outils collaboratifs adaptés (par ex : Mattermost,
Utilisation d'outils collaboratifs adaptés (par exemple Mattermost,
Slack, MSTeams, Google Drive,
OnlyOffice)
OnlyOffice).
\end{itemize}
\item
Organiser son travail et celui de l'équipe à partir d'outils de
planification (Gantt, \textabbrv{PERT})
planification (Gantt, \textabbrv{PERT}).
\item
Prendre sa place dans une équipe en connaissant les différents rôles
d'une équipe projet
d'une équipe projet.
\item
Conceptualiser les étapes des tâches à réaliser à l'aide d'outils
adaptés (cartes mentales, infographies,
etc.)
etc.).
\item
Prendre conscience des délais et échéances dans un travail en mode
projet
projet.
\item
Savoir s'adapter à des profils professionnels différents (manager,
collaborateur, client) qui interviennent
dans un projet
dans un projet.
\item
Apprendre à faire un bilan régulier sur l'avancée d'un projet : points
bloquants, solutions apportées
bloquants, solutions apportées.
\item
Appliquer la critique constructive dans l'intérêt du projet
\item
Organiser des réunions de projet
Organiser des réunions de projet.
\item
Présenter un projet selon ses spécificités et le public visé.
\end{itemize}

View File

@ -37,16 +37,16 @@
% Le descriptif
\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
l'Internet\fg{} (RT1) et \og Connecter les entreprises et les
usagers\fg{} (RT2). Elle vise à fournir à l'étudiant les connaissances
et les compétences indispensables pour pouvoir concevoir, déployer et
maintenir les infrastructures réseaux grande distance (Internet), plus
précisément l'adressage, le routage et le transport de paquets. Une
première approche du filtrage (sécurité) y est aussi abordée.\\
Elle contribue aussi à la compétence \og Créer des outils et
applications informatiques pour les R\&T\fg{} (RT3) à travers la
découverte du poste client et de son environnement logiciel.\\
les compétences de cœur de métier ``Administrer les réseaux et
l'Internet'' (RT1) et ``Connecter les entreprises et les usagers''
(RT2). Elle vise à fournir à l'étudiant les connaissances et les
compétences indispensables pour pouvoir concevoir, déployer et maintenir
les infrastructures réseaux grande distance (Internet), plus précisément
l'adressage, le routage et le transport de paquets. Une première
approche du filtrage (sécurité) y est aussi abordée.\\
Elle contribue aussi à la compétence ``Créer des outils et applications
informatiques pour les R\&T'' (RT3) à travers la découverte du poste
client et de son environnement logiciel.\\
On introduira des notions de sécurité informatique (les ressources
associées aux recommandations de l'\textabbrv{ANSSI}, CyberEdu, CyberMalveillance
pourront servir de support)}
@ -69,4 +69,4 @@ pourront servir de support)}
}
% 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
\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
l'Internet\fg{} (RT1). Elle donne aux étudiants les compétences pour
les compétences de cœur de métier ``Administrer les réseaux et
l'Internet'' (RT1). Elle donne aux étudiants les compétences pour
effectuer des tâches simples d'administration du système d'information
de l'entreprise (processus, utilisateurs, automatisation) et pour
utiliser des solutions de virtualisation, de conteneurisation.\\
Elle contribue aussi à la compétence \og Créer des outils et
applications informatiques pour les R\&T\fg{} (RT3) à travers la
découverte du poste client et de son environnement logiciel.}
Elle contribue aussi à la compétence ``Créer des outils et applications
informatiques pour les R\&T'' (RT3) à travers la découverte du poste
client et de son environnement logiciel.}
% Contenus
\ajoutRcontenudetaille{
\vspace{-5pt}
\begin{itemize}
\item
Gestion des systèmes de fichiers (volumes, droits, types de fichiers)
Gestion des systèmes de fichiers (volumes, droits, types de fichiers).
\item
Gestion de processus et services
Gestion de processus et services.
\item
Gestion de ressources utilisateurs (comptes, quotas)
Gestion de ressources utilisateurs (comptes, quotas).
\item
Scripts pour l'automatisation de séquences de commandes
Scripts pour l'automatisation de séquences de commandes.
\item
Utilisation de fichiers de traces (logs)
Utilisation de fichiers de traces (logs).
\item
Initiation et mise en oeuvre d'infrastructures de virtualisation et/ou
de conteneurisation
de conteneurisation.
\end{itemize}
}

View File

@ -39,12 +39,12 @@
\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
d'information\\
Les services abordés sont des services essentiels à tout SI tels que le
\textabbrv{DNS}, le \textabbrv{DHCP} ou le transfert de fichiers pour les configurations
d'appareils réseaux pour n'en citer que quelques-uns. Cette découverte
des premiers protocoles applicatifs permettra également de sensibiliser
les étudiants aux risques de sécurité liés à la configuration de ces
services\\
Les services abordés sont des services essentiels à tout système
d'information tels que le \textabbrv{DNS}, le \textabbrv{DHCP} ou le transfert de fichiers pour
les configurations d'appareils réseaux pour n'en citer que quelques-uns.
Cette découverte des premiers protocoles applicatifs permettra également
de sensibiliser les étudiants aux risques de sécurité liés à la
configuration de ces services\\
On introduira des notions de sécurité informatique (les ressources
associées aux recommandations de l'\textabbrv{ANSSI}, CyberEdu, CyberMalveillance
pourront servir de support).}
@ -54,23 +54,25 @@ pourront servir de support).}
\vspace{-5pt}
\begin{itemize}
\item
Rappels sur les protocoles de transport (\textabbrv{TCP}, \textabbrv{UDP})
Rappels sur les protocoles de transport (\textabbrv{TCP}, \textabbrv{UDP}).
\item
Utilisation de ssh pour l'accès distant
Utilisation de ssh pour l'accès distant.
\item
Principe, installation, configuration et tests des services :
\item
\textabbrv{DHCP}
\item
\textabbrv{DNS} (fonctions de base)
\item
\textabbrv{HTTP}
\item
\textabbrv{TFTP}, \textabbrv{FTP}
\item
\textabbrv{NTP}
\begin{itemize}
\item
\textabbrv{DHCP};
\item
\textabbrv{DNS} (fonctions de base);
\item
\textabbrv{HTTP};
\item
\textabbrv{TFTP}, \textabbrv{FTP};
\item
\textabbrv{NTP}.
\end{itemize}
\end{itemize}
}
% 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
\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
\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
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
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,
cf.~\url{https://pix.fr/competences}), mais aussi à les traiter en
des données provenant de différentes sources (thématiques du
\href{https://pix.fr/competences}{PIX}), mais aussi à les traiter en
développant différents outils informatiques pour ses besoins personnels
ou pour son équipe (RT3). Plus largement, il contribue activement à
l'exploitation et à la maintenance du système d'information de l'
entreprise.\\
l'exploitation et à la maintenance du système d'information de
l'entreprise.\\
Cette ressource introduit les éléments fondamentaux des systèmes de
gestion de base de données. Elle présente différentes alternatives
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 :
\begin{itemize}
\item
système de gestion de données (relationnel/non relationnel);
Système de gestion de données (relationnel/non relationnel);
\item
structuration des données: fichiers (\textabbrv{CSV}, \textabbrv{JSON}), exemples de sources
ouvertes (open data), web scraping;
Structuration des données: fichiers (\textabbrv{CSV}, \textabbrv{JSON}), exemples de sources
ouvertes (\emph{open data}), \emph{web scraping};
\item
sensibilisation à la réglementation française et internationale
Sensibilisation à la réglementation française et internationale
(\textabbrv{CNIL}, \textabbrv{RGPD}).
\end{itemize}
\item

View File

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

View File

@ -1,6 +1,8 @@
import os
import glob
import argparse
import logging
import sys
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,
# puis dans python/export si manquantes
fichiers_definitifs = os.listdir(REPERTOIRE_RESSOURCES_DEFINITIVES)
fichiers_temp = os.listdir(REPERTOIRE_TEMP)
fichiers_definitifs = [ os.path.split(x)[1] for x in glob.glob(REPERTOIRE_RESSOURCES_DEFINITIVES+'/*.yml') ]
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]
for f in fichiers_temp:
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:
DATA_ABBREVIATIONS = yaml.load(fid.read(), Loader=yaml.Loader)
AUCUN_PREREQUIS = "Aucun"
def supprime_accent_espace(chaine):
"""Met en minuscule, supprime les accents, les ponctuations et les espaces"""
purge = chaine.lower().replace("'", "").replace("", "")

View File

@ -70,17 +70,23 @@ class Ressource:
) # , code_latex))
saes = "\n".join(saesRT)
ajoutprerequis = "\\ajoutRprerequis{%s}{%s}"
if self.ressource["code"] == "R110":
print("ici")
prerequis = ""
if self.ressource["prerequis"] == "Aucun":
if self.ressource["prerequis"] == AUCUN_PREREQUIS:
prerequis = ""
else:
liste = []
for (no, mod) in enumerate(self.ressource["prerequis"]):
liste.append(
ajoutprerequis % (mod, get_officiel_ressource_name_by_code(mod))
)
prerequis = "\n".join(liste)
# est-une liste de ressources
if not self.ressource["prerequis"][0].startswith("R"):
prerequis = "\\ajoutRprerequislycee{%s}" % (self.ressource["prerequis"])
else:
ajoutprerequis = "\\ajoutRprerequis{%s}{%s}"
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
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
from ruamel.yaml.scalarstring import FoldedScalarString as folded
from tools import caracteres_recalcitrants
__LOGGER = logging.getLogger(__name__)
@ -15,6 +14,7 @@ class Docx():
def __init__(self, nom, brut):
self.nom = nom
self.code = None # chargé ultérieurement
self.brut = brut # les données brutes de la ressource/saé
self.semestre = None # le semestre de la ressource/saé (chargé ultérieurement)
self.apprentissages = None # les acs (chargés ultérieurement)
@ -129,8 +129,6 @@ class Docx():
avec_marqueur = False
last_marqueur = 0
for (i, ligne) in enumerate(lignes):
if "dAPI" in ligne:
print("ici")
ligne = ligne.replace("\t", " "*2)
if " *" in ligne and avec_marqueur == False:
avec_marqueur = True
@ -207,10 +205,12 @@ class RessourceDocx(Docx):
def nettoie_prerequis(self):
"""Nettoie les prérequis"""
if self.prerequis:
self.prerequis = nettoie_liste_ressources(self.prerequis)
if not self.prerequis:
self.prerequis = "Aucun"
if not self.prerequis or AUCUN_PREREQUIS.lower() in self.prerequis.lower():
self.prerequis = AUCUN_PREREQUIS
else:
ressources = nettoie_liste_ressources(self.prerequis)
if ressources:
self.prerequis = ressources
def nettoie_sae(self):
"""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 :
le champ peut contenir 2 volumes (heures formation puis heures tp), auquel cas les 2 valeurs sont renvoyées
dans un tuple"""
volumes = None
if self.heures_encadrees: # si les heures encadrées sont renseignées
volumes = nettoie_champ_heure(self.heures_encadrees)
if self.tp:
@ -252,8 +252,13 @@ class RessourceDocx(Docx):
indicec = 0
contexte = []
if True in [ligne.startswith("Contenus") for ligne in champs]: # la ligne commençant par Contenus
indicec = [ligne.startswith("Contenus") for ligne in champs].index(True)
marqueur = False
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]:
contexte = champs[indicea + 1:indicec]
else:
@ -276,6 +281,12 @@ class RessourceDocx(Docx):
contenu = self.contenu.replace(" / ", "/")
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):
"""Lance le nettoyage des champs"""
self.nettoie_code()
@ -291,6 +302,7 @@ class RessourceDocx(Docx):
# Remet en forme le descriptif
self.split_description()
self.nettoie_contexte()
self.nettoie_contenu()
print(f"{self.code} {self.semestre}")
@ -543,8 +555,6 @@ class SAEDocx(Docx):
def nettoie_ressources(self):
"""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)
if not self.ressources:
SAEDocx.__LOGGER.warning(f"nettoie_ressources: dans {self.nom} pas de ressources (:")