Présentation

AMCtoOwncloud est un script Nautilus qui permet d'envoyer simplement les copies corrigées avec Auto Multiple Choice sur un serveur Owncloud/Nextcloud.

Chaque copie est téléversée dans un dossier unique créé pour chaque étudiant qui sera :
  • partagé avec l'étudiant (qui peut être un utilisateur local ou distant sur un serveur fédéré) ;
  • partagé par lien.

Les liens partagés sont ensuite sauvegardés dans un nouveau fichier .csv (comportement par défaut) ou dans le fichier .csv courant.

Après exécution du programme, la hiérarchie des fichiers est la suivante :

Contrôles/
├── 3emeE/
|   ├── MOUSE Mickey (3998) - Interros Maths/
│   │   └── Interro 1 - MOUSE Mickey (3998).pdf
│   └── MOUSE Minnie (3999) - Interros Maths/
│       └── Interro 1 - MOUSE Minnie (3999).pdf
└── 4emeE/
    └── DUCK Donald (4999) - Interros Maths/
        └── Interro 1 - DUCK Donald (3999).pdf

Les noms Contrôles, Interro 1, et Interros Maths sont modifiables, et les autres champs sont extraits du fichier .csv des étudiants. Par exemple, si vous n'avez pas de classes saisies dans votre fichier .csv, et si vous dossier racine est vide '', l'organisation des fichiers deviendra :

MOUSE Mickey (3998) - Interros Maths/
    └── Interro 1 - MOUSE Mickey (3998).pdf
MOUSE Minnie (3999) - Interros Maths/
    └── Interro 1 - MOUSE Minnie (3999).pdf
DUCK Donald (4999) - Interros Maths/
    └── Interro 1 - DUCK Donald (3999).pdf

Utilisation

Faire un clic droit sur les copies corrigées (ou sur les dossiers les contenant) et se rendre dans le menu scripts :

Saisir le mot de passe Owncloud , le nom du contrôle, et attendre :

Les éventuels problèmes rencontrés devraient être indiqués (erreurs d'identification, d'envoi ou de partage, fichiers non associés à des étudiants, etc...).

Installation

Télécharger la dernière version sur github, puis copier AMCtoOwncloud.sh et .AMCtoOwncloud.py dans le répertoire des scripts Nautilus : ~/.local/share/nautilus/scripts/

Installer les modules Python suivants :

requests, lxml.html, owncloud (voir pyocclient).

Généralement, les premiers sont déjà présents sous forme de paquets dans votre distribution. Pour installer le module owncloud, j'utilise la commande suivante :

pip3 install pyocclient

Vérifier que gnome-terminal est installé ou éditer le fichier AMCtoOwncloud.sh pour utiliser un autre terminal.

Configuration

Éditer le fichier .AMCtoOwncloud.py et changer les paramètres suivants à la fin du programme :

CSV = '/chemin/vers/csv/etudiants.csv'
FOLDER = 'Contrôles/'
ADDRESS = 'https://ncloud.zaclys.com'
USERNAME = 'NomUtilisateur'

Le fichier .csv contenant les informations des étudiants doit utiliser des points-virgules ; comme séparateurs ainsi que les en-têtes de colonnes ci-dessous (il y a des paramètres optionnels dans la méthode `identify_students()` pour personnaliser ce comportement, voir plus bas :

group;surname;name;id;owncloud;email
3emeE;MOUSE;Mickey;3998;cabitzmil;mickeymouse@domain.com
3emeE;MOUSE;Minnie;3999;agrevet;minniemouse@domain.com
4emeE;DUCK;Donald;4999;prenaud@aFederatedServer.com;donaldduck@domain.com

Enfin, les copies corrigées doivent comporter le numéro d'étudiant dans leur nom de fichier
(le premier nombre est extrait pour associer chaque copie à l'étudiant correspondant). Pour ce faire, ne pas oublier de configurer auto-multiple-choice avec les mêmes en-têtes que dans votre fichier .csv :

Cas particuliers d'utilisation

Pour personnaliser le comportement du script, vous pouvez éditer les 4 dernières lignes du fichier .AMCtoOwncloud.py :

amcsend = AMCtoOwncloud()
amcsend.identify_students(csv_filepath=CSV)
amcsend.connect_owncloud(address=ADDRESS, username=USERNAME, SSO=False)
amcsend.upload_and_share(folder_root=FOLDER, replace_csv=False)

Par exemple, si votre serveur Owncloud se trouve derrière un portail d'authentification unique, vous pouvez utiliser l'option SSO=True. Testé avec un espace numérique de travail Envole qui utilise CAS comme portail d'authentification unique.

Vous pouvez aussi sauvegarder les liens partagés dans le fichier .csv courant avec l'option replace_csv=True. Pensez à faire une sauvegarde avant et notez que les lignes commençant par un # (commentaires) seront perdues lors du processus.

Plus d'options sont disponibles, vous pouvez trouver ci-dessous une liste complète de toutes les options avec les paramètres par défaut :

amcsend = AMCtoOwncloud(list_of_paths=None, verbose=False)
amcsend.identify_students(csv_filepath=CSV, verbose=False, debug=False,
                          csv_delimiter=";",
                          csv_comment="#",
                          name_header="name",
                          surname_header="surname",
                          group_header="group",
                          number_header="id",
                          email_header="email",
                          owncloud_header="owncloud",
                          link_header="link")
amcsend.connect_owncloud(address=ADDRESS, username=USERNAME, password=None, SSO=False)
amcsend.upload_and_share(folder_root=FOLDER, folder_name=" - Maths Quizzes",
                                             quiz_name=None,
                                             share_with_user=True,
                                             share_by_link=True,
                                             replace_csv=False)

Générer des courriers d'information

Un document LaTeX est aussi présent dans le dossier /information letters/ pour imprimer les liens partagés ainsi que le QR code correspondant pour chaque étudiant :

Quelques commentaires personnels

Envoyer le copies corrigées aux élèves était un véritable problème pour moi :

  • je travaille en collège et tous les élèves/parents n'ont pas un email ;
  • s'ils ont une adresse email, ils ne s'en rappelle pas toujours (certains ne veulent aussi simplement pas être contactés !) ;
  • les emails sont souvent marqués comme "spam" ;
  • il n'est pas possible d'envoyer un trop grand nombre d'email à la fois.

Au final, utiliser une plateforme de cloud était plus pratique, d'autant plus que les élèves dans ma région ont un compte Owncloud sur l'ENT. Pour les étudiants n'ayant pas de compte cloud ou rencontrant des difficultés pour se connecter (beaucoup de mauvaise volonté), je procède désormais ainsi : je fais coller dans le carnet un courrier avec le lien partagé et un QR code pour en faciliter l'accès.

J'essaierai à l'avenir de raccourcir les liens automatiquement. L'intégration doit aussi pouvoir se faire avec d'autres navigateurs de fichiers (Thunar ou Dolphin par exemple).