Age | Commit message (Collapse) | Author |
|
Change la fonction get_weeks() du parseur UPS2018 pour créer la liste
des semaines présentes à partir de la liste des événements.
Avant, cette liste contenait seulement la semaine courante, ce qui
posait problème quand une mise à jour était faite avec les paramètres
`--all --force' : les cours à partir de la semaine courante étaient
supprimés, mais les cours rajoutés étaient ceux du mois entier. Il
était donc possible de se retrouver avec des cours en doublons entre
la première semaine du mois courant et la semaine courante.
Il peut éventuellement y avoir un défaut avec cette technique : si
tous les cours des premières semaines du mois ont été retirées de
l’emploi du temps parce qu’ils ont étés annulés, les premières
semaines ne se trouveront pas dans la liste des semaines disponibles,
et ces cours resterons dans la base de celcatsanitizer, alors qu’ils
ont étés annulés. Il serait peut-être plus judicieux de créer une
liste de manière statique, en prenant comme seule valeur la première
semaine du mois.
La fonction get_weeks() calcule donc le début de chaque événement et
vérifie si son titre ne contient pas « global event » pour ne pas le
prendre en compte. Pour éviter de faire ces opérations deux fois, ces
données sont stockées dans l’événement.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Il arrive que les pages retournées par la source sont incomplètes et
ne contiennent pas d’événement, et parfois des mois entiers sont
vides.
On tente donc de récupérer une page trois fois au maximum, et, si cela
échoue toujours, on abandonne en renvoyant une exception.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Pour l’instant, on ne souhaite pas enregistrer les événement globaux.
On vérifie donc si l’événement est global, et, si c’est le cas, on ne
traite pas l’événement. Or, on insérait un cours dans la base de
données avant de faire ce test. Un cours avec aucun attribut était
donc laissé dans la base de données.
Ce commit déplace donc la création du cours après avoir vérifié si un
événement est global.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
La plupart des cours contiennent un élément correspondant à l’heure de
début et de fin du cours. Lorsqu’un cours ne possède pas de nom, il
se peut que cet élément soit utilisé comme type, ce qui n’a pas de
sens. On va donc détecter la présence de cet élément à la première
place à l’aide d’une regex, et, si jamais il est présent, on n’utilise
pas le premier élément de la liste.
À l’origine, cet élément ne devait pas être utilisé pour cette raison,
mais ce comportement a été changé avec le commit ab6ca3c ("parsers:
correction de l’index du premier élément à analyser"), après la
détection de cours n’ayant pas cet élément.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
set() ne conserve pas nécessairement l’ordre des données, ce qui a
plusieurs conséquences. Premièrement, un cours avec plusieurs noms
séparés par un point-virgule peut changer de nom dans celcatsanitizer
d’une mise à jour à une autre. Deuxièmement, cette fonctionnalité
devient intestable de manière certaine.
Pour remédier à cela, on utilise la structure OrderedDict à la place.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Commencer au premier élément fait planter l’étape de déduction des
éléments des cours si jamais un cours n’a ni nom, ni type.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|