Closed vingerha closed 2 years ago
Hello, alors ça c'est drôle ! j'ai justement travaillé la dessus hier soir ;-) Ceci est surement dû à la manière d'éditer les EdT dans Pronote - ce que fait un prof ou l'administration de l'école. Je pense (mais aucune certitude). que de temps en temps, au lieu de modifier la salle, il supprime l'heure et la recréé ! (a mon avis ce n'est pas la bonne manière mais rien pour les en empêcher) bref...
Du coup, on se retrouve de temps en temps avec des cours en double à la même heure : comme dans ton exemple. D'expérience, car j'ai pus constaté le pb depuis longtemps, on a toujours le cours remplacé en premier et le cours annulé en 2eme.
Du coup, je n'ai fait que rajouter un test dans la boucle qui construit le Json.
Je check si l'heure du cours à afficher est la même que le cours précédent et que le 2eme cours qui devrait affiché est bien en statut annulé
Et ça donne
for lesson in lessons_today:
index=lessons_today.index(lesson)
if not (lesson.start == lessons_today[index-1].start and lesson.canceled == True) :
jsondata['edt_aujourdhui'].append({
'date_heure': lesson.start.strftime("%d/%m/%Y, %H:%M"),
à la place de :
for lesson in lessons_today:
jsondata['edt_aujourdhui'].append({
'date_heure': lesson.start.strftime("%d/%m/%Y, %H:%M"),
je vais publier une nouvelle version qui intègre ça très bientôt
J'avais la même idee mais on ne sait jamais si l'annulation arrive apres le changement de salle ou avant car aucune date de maj. Donc il faut assumer annulée est toujours avant. Chez mon fils un autre cas a rire (je ne sais pas comment les profs pensent). Ed. sport annulée avec mention 'cours maintenu' Je pense que le front-end de pronote chez les profs n'est pas evident ou....autres raison :) En plus, ma fille vient d'arriver a la maison et pour elle, la vie scolaire a dit que un des leçons était annulé et elle pourra partir...le prof a eu sa classe vide...et pronote dit aussi: changement de salle (voir si dessus).... c'est le bazar
Avec le diner qui arrive, j'ai conclus que t'as besoin d'une autre solution que moi. Car je télécharge les Leçons jusq'a 14 jours avant, dans ma base de données, il faut que je gère les maj differament. Pour ta solution 'edt aujourd'hui' il n'y a presque pas de risque d'un maj dans la journée. Donc, de mon avis, ta solution marche 99% des cas (jamais dire 100%)
Après plus d'analyses des données ,le résultat est pareil, Pour utiliser une logique comme si-dessus, les l=données doivent arriver trié par 'lessonStart' + 'lessonCanceled' et dans mon db ils ne sont pas toujours stocké comme ça. Heureusement ce tri est facile car 'sql' mais je ne sais pas comment pronotepy fait ces extraits ... est-ce que l'ordre est toujours non-canceled avant canceled ? Moi...je suis bien maintenant...en attendant le prochain défi :)
dans ma solution, même quand y'a une mise à jour de la journée, elle est détectée : le fichier étant généré toutes les X minutes (réglé à 10min chez moi) - si y'a une mise à jour le sensor peut même le détecter - et on peut même envoyer une notification sur mise à jour de l'EDT par un prof en pleine journée
donc j'au lu que pour toi l'ordre d'arrivage des lignes canceled/non-canceled n'est pas importante ...tant mieux... :)
si si ça a une importance, mais tu ne remarqueras que je supprime que si : 1 - y'a 2 cours à la même heure 2 - Et que, le 2eme est canceled donc je ne prends pas de risque à supprimer des cours et faire en sorte que l'EDT ne soit pas le bon...
Mais en tous les cas merci de confirmer aussi que dans la majorité des cas (dans des datas), le canceled arrive en 2eme
Bon ! J'ai eu le cas inverse 😏 Absence ou remplacement en premier et le doublon en 2eme Du coup, ils s'affichent tous les 2... Il faut renforcer le test que je fais : détecter les doublons d'horaire - checker si un des 2 est annulé et si l'autre est maintenu - et supprimer le annulé
Ah.... je ne veux pas dire que je suis heureux mais heureusement c'est pas que mchez moi :) Dimanche dans la journée j'ai vu aussi ce cas: enrégistrement d'une changement de salle et quelques heures plus tard le prof à annulé totalement, deux lignes. Avec tous ça, je ne peux plus utiliser une base de données pour enregistrer des leçons car l'ordre / vérité n'est pas a détermner. ....et j'ai abandonné ça.
Autre cas... ma fille a une sortie pedagogique lundi, 3 cours annulé (bien dans le json) mais pas d'enregistrement du sortie... pronote est vraiment 'intéressent' (comme l'on dit en anglais )
{
"id": "31E57A1F6781E1",
"date_heure": "04/04/2022, 13:00",
"date": "04/04/2022",
"heure": "13:00",
"heure_fin": "15:00",
"cours": "HIST-GEO ALLEMAND",
"salle": "A012 (CDI allemand)",
"annulation": true,
"status": "Sortie p\u00e9dagogique",
"background_color": "#F6F0B5"
},
{
"id": "31D7761B6781CA",
"date_heure": "04/04/2022, 15:00",
"date": "04/04/2022",
"heure": "15:00",
"heure_fin": "17:00",
"cours": "HISTOIRE & GEO SI",
"salle": "A307",
"annulation": true,
"status": "Sortie p\u00e9dagogique",
"background_color": "#B8B504"
},
{
"id": "3139E7BA64811F",
"date_heure": "04/04/2022, 17:00",
"date": "04/04/2022",
"heure": "17:00",
"heure_fin": "18:00",
"cours": "ENS. MORAL & CIVIQUE",
"salle": "A102",
"annulation": true,
"status": "Sortie p\u00e9dagogique",
"background_color": "#FFFF80"
Ah oui ! Encore un cas à gérer ! Mais tu as vu ? La sorti est marquée dans le statut qui est normalement donne l'annulation ?!?
Du coup, on peut faire un test en front qui se base la dessus mais c bizarre... A voir
Et... maintenant une situation a l'invese avec annulation. Cours normal > Cours modifié > Cours annulé..., les deux derniers sont présené et avec les cas si-dessus, je pense q'il n'est plus possible de savoir quel est l'état correct maintenant, je suis obligé de présenter chaque enrégistrement
Nouveauté (c'est une boîte de surprises) ... Même avec 'lessonNum', qui presume une sorte de unicité... dommage ...... j'ai maintenant une situation avec deux lignes pour la même leçon avec même lessonNum.
Je t'ajoute la situation d'aujourd'hui, pour trois cours ... pour rire un peu de plus Suivant les numeros, ils ont annulé puis modifié ces trois cours ... mais pour la première leçon ... c'est vraiment annulé Avec ça ... pourquoi ils choississent classe absente ou annulé ... shoot me...
je clos cet échange
Bonjour, avec ta solution et aussi la mienne, je reçoit double lignes de temps en temps. Example pour aujourd'hui: leçon annulé et re-enregistré dans un autre locale même heure... J'ai aussi vu d'autre trucs curieux dans grades/ evaluations et j'assume que pour les profs, c'est pas trops evident de gérer pronote de leur part. Question: est-ce que t'as déjà pensé d'une solution ou de l'accepter car probablement impossible de prevoir?