Age | Commit message (Collapse) | Author |
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
`async' est devenu un mot-clef avec Python 3.7. Or, un paramètre est
appelé de cette manière dans le parseur UPS2018. Ceci le renome en
`asynchronous' pour corriger ce problème
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
|
|
L’emplacement des différents éléments a changé, mdr.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
|
|
Les salles et amphis commencent maintenant par leur département, de
cette manière :
FSI / Amphi FERMAT (bat.1A)
Au lieu de :
Amphi FERMAT (bat.1A)
Cela ne fait que rajouter du bruit sur la page. Ceci modifie le
filtre de formatage des salles pour retirer le département si il est
présent.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Le parseur UPS2018 va se servir de cette liste aussi, elle est donc
déplacée dans sa propre constante.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Le nouveau format utilisé requiert d’effectuer des requêtes POST et
non plus GET, une URL n’est donc plus suffisante pour indiquer la
source. Un champ `metadata' est rajouté, contenant une métadonnée au
format texte. Il serait plus judicieux d’utiliser un champ JSONField,
mais ce type est restreint à PostgreSQL (mon environnement de
développement utilise toujours SQLite).
Les ID des cours dans celcat ne sont plus de simples nombres mais des
chaînes de caractères. Ce changement est donc reflété dans le modèle
des cours.
Dans le nouveau format, si un cours a plus de 3 groupes, seul les 3
premiers groupes sont listés, les autres sont marqués avec un texte du
genre « 2 autres… ». (Ça fait 2 ans et demi que je travaille sur ce
projet, et plus le temps passe, plus j’ai l’impression que la drogue
est un outil de travail comme un autre chez celcat.) Le champ `buggy'
est rajouté pour indiquer si c’est le cas de ce cours ou non, ce qui
permettra d’ajouter une remarque sur les pages ouèbe ou les ICS.
Les interfaces d’administration sont modifiées pour intégrer ces
changements.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Ceci change le nom d’ICSdroid sur la page des ICS en ICSx⁵, son nouveau
nom.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
|
|
L’API devient optionnelle, et un paramètre, CS_ENABLE_API, est rajouté
pour sélectionner son état (activé ou non). Par défaut, il est
désactivé.
La documentation est mise à jour pour refléter ces changements.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Il peut être intéressant de lister les cours par module (UE). Une
table est donc rajoutée pour stocker cette information et permettre
d’effectuer des recherches et des tris.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Les cours dans celcat ont un champ id. Ce changement permet de le
stocker dans la base de données (sous la forme d’un entier) et de
l’afficher dans l’interface d’administration.
Pour l’instant, on ne sait pas si cette valeur est unique ou non. Il
n’y a donc pas de contraintes sur ce champ pour le moment.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Pour pouvoir analyser plus facilement les attributs d’un cours, un
nouvel outil est rajouté pour lister tous les attributs d’un ou
plusieurs cours. Il fait appel au parseur et permet de sélectionner
une source, et de limiter le nombre de cours affichés.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Pour les besoins de l’ajout de la notion de module, un nouvel outil
permettant de lister les attributs d’un cours sera rajouté. À
l’instar de timetables, il fera aussi appel au parseur. Pour éviter
de dupliquer du code, la partie accès au parseur est déplacé dans une
autre classe.
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>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Ajout de vues permettant de consulter les emplois du temps associés à
une année ou à une source, les groupes associés à un emploi du temps,
les cours d’un groupe ou d’une salle (soit tous, soit ceux de la
semaine courante, soit ceux d’une semaine précise), de lister les
semaines de cours, et d’accéder à QSJPS.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
L’API a besoin de vues pour renvoyer des données. Ces vues utilisent
les sérialiseurs écrits précédement.
Pour l’instant, les sérialiseurs sont assez rudimentaires (ils ne
peuvent afficher qu’une liste d’objets ou un seul objet sans filtres
ou fonctionnalités supplémentaires), et ne permettent pas d’effectuer
de modifications.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Les sérialiseurs permettent de représenter les modèles en JSON.
Tous les sérialiseurs exportent tous les champs de leurs modèles
respectifs. En plus de cela, le sérialiseur du modèle des cours
sérialise en plus les groupes et salles pour ne pas avoir à faire trop
d’appels à l’API.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Django REST Framework sera utilisé pour réaliser l’API de
celcatsanitizer.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
|
|
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
|
|
Le service Calendar du géant du numérique Google ne supporte pas bien
les fichiers ICS. Les mises à jour sont plus ou moins quotidiennes,
et il est impossible d’en changer la fréquence ou de les forcer. Or,
celcatsanitizer rafraîchir ces informations juste après que Google ait
mis à jour ses ICS. Cela signifie qu’il peut y avoir un délai de un
jour entre le changement d’une information sur celcatsanitizer et sa
prise en compte par Google Calendar, sans aucun recours possible.
Les utilisateurs ne sont pas forcément au courant de ce problème,
alors un texte a été rajouté pour les en informer.
Le lecteur attentif pourra se demander si il n’y a pas de conflit
d’intérêt entre l’écosystème Android, dans lequel l’application de
base (Agenda) ne peut se synchroniser qu’à Google Calendar à moins
d’installer une application tierce (telles que DAVDroid ou ICSDroid,
malheureusement payantes sur le Play Store mais gratuites sur
F-Droid).
Il pourra aussi se questionner sur la raison du mauvais support des
ICS par ce service -- serait-ce une technique pour inciter les
utilisateurs à se servir de Google Calendar en priorité, au détriment
des formats standards et des autres écosystèmes (par exemple, celui
d’Apple), et ainsi attirer plus d’utilisateurs ?
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Il est possible que la source renvoie des pages vides ou incorrectes,
il est donc nécessaire de tester le comportement du parseur dans ces
cas-là.
Ajout d’un modèle de page vide dans les données de test.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Dans certaines conditions, un nouveau cours doit être créé dans la
base de données, mais parfois non. Pour vérifier qu’un seul cours a
bien été rajouté (ou non, en fonction des cas), on teste aussi le
nombre de cours présent dans la base de données.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Le parseur est une des parties les plus importantes de
celcatsanitizer, mais ni le parseur 2017, ni le parseur 2018 n’ont eu
de test unitaires à proprement parler. Jusqu’ici, pour tester ce
composant, on ajoutait une source dans la base, on la récupérait, et
on regardait si tout correspondait plus ou moins. Cette technique a
plusieurs inconvénients : c’était une tâche rébarbative et pas
systématiquement effectuée, ce qui a posé quelques problèmes par le
passé, certains cas pouvaient ne pas se trouver dans la source au
moment de la récupération, et ce n’était pas reproductible proprement.
Rajouter des tests permettra donc de tester efficacement le parseur,
avec tous les cas de figure, rapidement et en utilisant seulement des
ressources locales.
Pour éviter d’utiliser le réseau, le module requests est mocké
lorsqu’on teste des fonctions qui l’utilisent.
L’initialisation du parseur et ses fonctions __get_event(),
get_events(), get_source() et get_update_date() (ainsi que la fonction
find_events_list() de manière indirecte) sont testées.
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
On dit « choisissez », pas « choississez ».
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Il existe plusieurs logiciels permettant d’utiliser le format ICS,
mais les utilisateurs ne les connaissent pas forcément. Le but est de
les informer sur les solutions existantes.
Google Calendar est volontairement exclu de cette liste.
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>
|
|
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>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|
|
Signed-off-by: Alban Gruin <alban@pa1ch.fr>
|