Améliore la détection des heures (de formation encadrées et de TP)

This commit is contained in:
Cléo Baras 2021-03-29 21:47:42 +02:00
parent 9d137e1d66
commit 83dfc1cb49
3 changed files with 28 additions and 11 deletions

View File

@ -132,9 +132,19 @@ ressources = {"S1" : [], "S2": []}
for r in liste_ressources: for r in liste_ressources:
# Nettoie le champ heures_encadrees # Nettoie le champ heures_encadrees
if r.heures_encadrees: if r.heures_encadrees:
r.heures_encadrees = nettoie_heure(r.heures_encadrees) volumes = nettoie_heure(r.heures_encadrees)
if r.tp: if r.tp:
r.tp = nettoie_heure(r.tp) r.tp = nettoie_heure(r.tp)
if isinstance(volumes, int):
r.heures_encadrees = volumes
elif isinstance(volumes, tuple):
r.heures_encadrees = volumes[0]
if not r.tp:
r.tp = volumes[1]
elif r.tp != volumes[1]:
__LOGGER.warning(r"Dans {r.nom}, pb dans les heures tp/td")
else:
r.heures_encadrees = None
# Nettoie les codes # Nettoie les codes
if r.code: if r.code:
@ -159,6 +169,8 @@ for r in liste_ressources:
r.semestre = "S2" r.semestre = "S2"
# Remet en forme le titre # Remet en forme le titre
if r.code: if r.code:
if supprime_accent_espace(r.nom) != supprime_accent_espace(DATA_RESSOURCES[r.semestre][r.code]):
__LOGGER.warning(r"Dans {r.nom}, pb dans le nom de la ressource : devient " + DATA_RESSOURCES[r.semestre][r.code])
r.nom = DATA_RESSOURCES[r.semestre][r.code] r.nom = DATA_RESSOURCES[r.semestre][r.code]
# Remet en forme les ACs # Remet en forme les ACs
@ -187,7 +199,7 @@ trait = "-"*len(ligne.format("", "", "", ""))
for sem in ressources: # parcours des semestres for sem in ressources: # parcours des semestres
ressem = ressources[sem] # les ressources du semestre ressem = ressources[sem] # les ressources du semestre
print(f"Semestre {sem}") print(f"Semestre {sem}")
print(trait, ligne.format("Code", "Ressource", "CM/TD", "TP"), trait, sep="\n") print(trait, ligne.format("Code", "Ressource", "Form.", "dont TP"), trait, sep="\n")
for r in ressem: for r in ressem:
print(ligne.format(r.code if r.code else "MANQUANT", print(ligne.format(r.code if r.code else "MANQUANT",
# r.nom[:30] + ("..." if len(r.nom) > 30 else "") , # r.nom[:30] + ("..." if len(r.nom) > 30 else "") ,

View File

@ -9,7 +9,7 @@ S1:
R108: "Bases des systèmes d'exploitation" R108: "Bases des systèmes d'exploitation"
R109: "Introduction aux technologies Web" R109: "Introduction aux technologies Web"
R110: "Anglais de communication et initiation au vocabulaire technique" R110: "Anglais de communication et initiation au vocabulaire technique"
R111: "Expression-Culture-Communication Professionnelles 1" R111: "Expression-Culture-Communication Professionnelles (ECC1)"
R112: "PPP: Connaître son champ d'activité" R112: "PPP: Connaître son champ d'activité"
R113: "Mathématiques du signal" R113: "Mathématiques du signal"
R114: "Mathématiques des transmissions" R114: "Mathématiques des transmissions"
@ -22,7 +22,7 @@ S2:
R205: "Signaux et Systèmes pour les transmissions" R205: "Signaux et Systèmes pour les transmissions"
R206: "Numérisation de l'information" R206: "Numérisation de l'information"
R207: "Sources de données" R207: "Sources de données"
R208: "Traitement de données en programmation" R208: "Analyse et traitement de données structurées"
R209: "Initiation au développement Web" R209: "Initiation au développement Web"
R210: "Développement de l'anglais technique" R210: "Développement de l'anglais technique"
R211: "Expression-Culture-Communication Professionnelles 2" R211: "Expression-Culture-Communication Professionnelles 2"

View File

@ -37,13 +37,18 @@ class Ressource():
def nettoie_heure(champ): def nettoie_heure(champ):
"""Nettoie le champ (horaire) (de la forme 46h ou 33...) pour n'en extraire que la valeur numérique""" """Nettoie le champ (horaire) (de la forme 46h ou 33...) pour n'en extraire que la valeur numérique"""
temp = champ.rstrip().lower() try: # champ contenant uniquement un nbre d'heure
champs = temp.split(" ") volumes = int(champ)
if champs[0][0] not in string.digits: return volumes
__LOGGER.warning("champ heure non analysable/analyse") except:
else: volumes = re.findall("(\d{2}\D|\d{1}\D)", champ)
heure = champs[0].split("h")[0] if len(volumes) == 1:
return int(heure) return int(volumes[0][:-1])
elif len(volumes) == 2:
volumes = sorted(volumes, reverse=True)
return (int(volumes[0][:-1]), int(volumes[1][:-1]))
else:
__LOGGER.warning("Heures non détectées")
def nettoie_code(champ): def nettoie_code(champ):
"""Recherche les codes ressources de la forme RXXX dans champ""" """Recherche les codes ressources de la forme RXXX dans champ"""