school-transport-application-form-tool

School Transport Application Form Tool


License
MIT
Install
pip install school-transport-application-form-tool==1.2.15

Documentation

Système libre de Gestion des Inscriptions des Familles au Transport Scolaire

School Transport Application Form Tool est un outil permettant de gérer automatiquement les inscriptions des enfants au transport scolaire d'une école.

Cet outil est libre et gratuit, sous licence Creative Commons CC BY-NC 4.0 (attribution, pas d'utilisation commerciale).

Cet outil utilise plusieurs applications de G Suite dont vous pouvez bénéficier gratuitement en tant qu'association.

Note : si vous êtes une Association de Parents d'Élèves (APE), nous vous recommandons de vous enregistrer officiellement comme une association loi 1901. La procédure d'enregistrement peut se faire de nos jours en ligne. Vous pourrez alors faire reconnaître votre association auprès de Google via leur partenaire Solidatech. L'ensemble de la procédure prend entre 3 à 4 semaines.

Formulaire(s) en Ligne

Ce système de gestion des inscriptions des familles au transport scolaire utilise l'application Google Forms qui permet de créer des formulaires en ligne et de collecter automatiquement les réponses fournies par les parents.

Les parents de votre lycée français international ne parlent probablement pas tous la langue française. Malheureusement, Google Forms ne permet toujours pas de créer un formulaire multilingue. Vous aurez à créer autant de formulaires, de structure similaire, que de langues que vous voudrez prendre en charge. Cela ne pose pas de problème pour la suite. C'est exactement la situation que nous avons au Lycée Français International de Saïgon.

Français Tiếng Việt English 한국어

Édition d'un Formulaire en Ligne

Sections

Le formulaire d'inscription de base est découpé en plusieurs sections, permettant à chacune des familles d'inscrire de 1 à 4 enfants et de 1 à 2 parents (ou représentants légaux).

La section d'un enfant permet d'entrer les informations suivantes :

  • Nom de famille de l'enfant (type Short answer)
  • PrĂ©nom de l'enfant (type Short answer)
  • Date de naissance (type Date)
  • Classe durant l'annĂ©e scolaire en cours (type Dropdown)

La liste des classes est celle fournie ci-dessous. Certains établissements français ne font que le primaire et pourront donc réduire cette liste.

Niveau Classe Abbréviation
1 Toute petite section TPS
2 Petite section PS
3 Moyenne section MS
4 Grande section GS
5 Cours préparatoire CP
6 Cours élémentaire, 1ère année CE1
7 Cours élémentaire, 2ème année CE2
8 Cours moyen, 1ère année CM1
9 Cours moyen, 2ème année CM2
10 Sixième 6ème
11 Cinquième 5ème
12 Quatrième 4ème
13 Troisième 3ème
14 Seconde 2nde
15 Première 1ère
16 Terminale Tle

Note : la date de naissance est nécessaire pour des raisons de sécurité. Un enfant de moins de 12 n'est pas autorisés (sauf dérogation signée de leurs parents) à descendre du bus scolaire sans la présence obligatoire d'un adulte habilité à venir récupérer cet enfant.

La section d'un parent permet d'entrer les informations suivantes :

  • Nom de famille du parent (type Short answer)
  • PrĂ©nom du parent (type Short answer)
  • Adresse de courriel (type Short answer avec validation de la rĂ©ponse)
  • NumĂ©ro de tĂ©lĂ©phone (type Short answer avec validation de la rĂ©ponse)
  • Adresse de la rĂ©sidence des enfants (type Paragraph ; champ facultatif dans le cas du 2nd parent, si l'adresse est identique Ă  celle du 1er parent)
Section Enfant Section Parent

Navigation entre les Sections

La navigation entre les différentes sections du formulaire est dynamique :

# Titre Suivante
1 Introduction 2
2 1er Enfant 3 ou 6
3 2ème Enfant 4 ou 6
4 3ème Enfant 5 ou 6
5 4ème Enfant 6
6 1er Parent 7 ou 8
7 2nd Parent 8
8 Soumission

Les sections du 1er, 2ème et 3ème enfant comportent une question finale demandant si le parent souhaite ajouter un autre enfant. Si le parent ne souhaite pas ajouter un 2ème, 3ème enfant ou 4ème enfant, le formulaire saute directement à la section du 1er parent.

De façon similaire, la section du 1er parent comporte une question finale demandant si le parent souhaite ajouter un second parent. Si le parent ne souhaite pas ajouter un 2nd parent, le formulaire saute directement à la dernière section.

Liaison des Formulaires Ă  un unique Tableur

Une fois que vous avez terminé la conception de vos formulaires Google Forms, vous allez les liér individuellement à un seul tableur Google Sheets :

Lorsque vous liez le tout premier formulaire, vous devez indiquer que vous souhaitez créer un nouveau tableur Google Sheets :

Par convention, nous renommerons chaque tableau par le code ISO 639-3:2007 de la langue correspondant au formulaire associé. Par exemple :

Nom par défault Nom modifié

Lorsque vous liez les formulaires, vous devez indiquer que vous souhaitez sélectionner le tableur Google Sheets précédemment créé :

1. Sélection du Tableur 2. Création automatique du 2nd Tableau 3. Renommage du Tableau

Cependant, outre le fait que le format de chaque tableau, correspondant aux réponses d'un formulaire, n'est guère lisible, les réponses des parents se retrouvent dispersées dans plusieurs tableaux du tableur Google Sheets. Nous ne lirons donc pas directement ce document.

Liste Principale des Enfants et des Parents

Les membres de l'association, généralement non technomanes, vont utiliser un autre document Google Sheets pour gérer les dossiers d'inscription des familles au transport scoliare de l'école. Ce document coloré présente les informations dans un format plus humainement compréhensible. Nous l'avons appelée la liste principale des enfants et des parents :

Les enfants d'une même famille sont listés dans un groupe de lignes, une par enfant. Les parents de ces enfants sont listés sur la même ligne que le premier enfant. Le numéro de dossier d'inscription et la date d'inscription sont également définis sur la même que le premier enfant :

Les informations concernant un enfant sont globalement les mĂŞmes que celles saisies par son parent dans l'un des formulaires en ligne :

  • PrĂ©nom de l'enfant (la première lettre de chaque prĂ©nom en majuscule, les autres lettres en minuscule)
  • Nom de famille de l'enfant (en lettres majuscules)
  • Nom complet de l'enfant (concatĂ©nation du prĂ©nom et du nom de l'enfant dans l'ordre culturel prĂ©sumĂ© de l'enfant)
  • Date de naissance
  • Niveau de la classe de l'enfant durant l'annĂ©e scolaire en cours

Les informations concernant un parent proviennent également des données saisies par ce parent dans l'un formulaires en ligne, avec quelques autres données calculées :

  • PrĂ©nom du parent
  • Nom de famille du parent
  • Nom complet du parent
  • Langue du parent (dĂ©terminĂ© pour le 1er parent de la langue du formulaire utilisĂ©; dĂ©terminĂ© pour le 2nd parent de son nom (e.g. vietnamien) ou par dĂ©fault de la langue du formulaire utilisĂ©)
  • Adresse de courrier Ă©lectronique (en lettres minuscules)
  • NumĂ©ro de tĂ©lĂ©phone (sur 10 chiffres, et prĂ©fixĂ© par l'index du pays)
  • Adresse de rĂ©sidence telle qu'entrĂ©e par le parent
  • Adresse telle que revue par Google Geocoding API (adresse gĂ©nĂ©ralement mieux formatĂ©e que celle entrĂ©e par le parent)
  • CoordonnĂ©es gĂ©ographiques (latitude, longitude) correspondant Ă  l'adresse de rĂ©sidence entrĂ©e par le parent

Les informations concernant les familles apparaissent automatiquement dans cette liste principale des enfants et des parents dès que les familles soumettent les données saisies dans les formulaires en ligne.

Traitement des Inscriptions en Ligne

Comment les données des dossiers d'inscription des familles se retrouvent automatiquement, correctement formatées, dans la liste principale des enfants et des parents ? Nous avons développé pour cela une petite application, School Transport Application Form Tool, qui est exécutée via l'interface en ligne de commande de votre ordinateur, encore appelée l'invite de commande.

Note : l'invite de commande est un outil permettant d'exécuter des actions avancées à l'aide de commandes textuelles. Il est disponible sous Linux, Mac et Windows, certes sous des formes différentes, mais le principe reste globalement le même.

Cette application permet de récupérer, automatiquement, de façon régulière, les réponses des parents aux formulaires d'inscription de leurs enfants au transport scolaire, d'ajouter les informations dans la liste principale des enfants et des parents et d'envoyer un courrier électronique aux parents pour les informer du numéro de leur dossier d'inscription :

La commande à exécuter est process_applications (dans le sens, en français, de "traiter les demandes d'inscription"), à laquelle il faut adjoindre quelques paramètres que nous allons plus tard dans cette documentation.

Cependant, avant de pouvoir exécuter cette commande, vous allez devoir installer notre application sur votre ordinateur. Cela se fait assez simplement.

Installation

Nous avons écrit notre application avec le language Python (version 3), language ô combien utilisé par les informaticiens de nos jours, et parfaitement adapté à ce type de traitement de l'information.

Si vous utilisez Linux ou Mac, chance est que Python est déjà installé sur votre ordinateur. Si vous utilisez Windows, vous aurez d'abord à installer Python, ce qui se fait en quelques clics de souris.

Pour vérifier si Python est installé sur votre ordinateur, le plus simple est de lancer l'invite de commande et d'y taper python. Si Python est installé, vous devriez voir un texte similaire à celui présenté ci-dessous :

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

Nous vous conseillons d'installer l'outil pipenv, l'un des meilleurs outils Python qui simplifie grandement l'installation d'applications Ă©crites en Python, comme la nĂ´tre. Son installation se fait simplement via l'invite de commande de votre ordinateur. Entrez la commande suivante :

pip3 install pipenv

Vous devriez ĂŞtre alors en mesure d'installer notre application, toujours via l'invite de commande de votre ordinateur, en entrant la commande suivante :

pipenv install school-transport-application-form-tool

Pour vérifier que notre application est bien installée, entrez la commande suivante, encore et toujours via l'invite de commande de votre ordinateur (vous allez rapidement devenir un pro de l'invite de commande !):

process_applications --help

Vous devriez voir s'afficher le texte suivant :

usage: process_applications [-h] [-f FILE] [-l LOCALE] [-c FILE] [-i ID]
                            [-o ID] [--smtp-hostname SMTP_HOSTNAME]
                            [--smtp-username SMTP_USERNAME]
                            [--smtp-port SMTP_PORT]
                            [--email-template-path EMAIL_TEMPLATE_PATH]
                            [--loop]

School Transport Application Form Tool

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  specify the path and name of the CSV file containing
                        information about children and parents
  -l LOCALE, --locale LOCALE
                        specify the locale (ISO 639-3 code) corresponding to
                        the language of the application form
  -c FILE, --google-credentials FILE
                        absolute path and name of the Google credentials file
  -i ID, --input-google-spreadsheet-id ID
                        specify the identification of the Google spreadsheet
                        containing the responses to the application forms
  -o ID, --output-google-spreadsheet-id ID
                        specify the identification of the Google spreadsheet
                        to populate children and parents from the application
                        forms
  --smtp-hostname SMTP_HOSTNAME
                        specify the host name of the machine on which the SMTP
                        server is running
  --smtp-username SMTP_USERNAME
                        specify the username/email address to connect to the
                        SMPT server
  --smtp-port SMTP_PORT
                        specify the TCP port or the local Unix-domain socket
                        file extension on which the SMTP server is listening
                        for connections
  --email-template-path EMAIL_TEMPLATE_PATH
                        specify the absolute path name of the localized HTML
                        e-mail templates
  --loop                require the script to loop for ever until the user
                        terminates it with Ctrl-C

Configuration

Autorisation d'Accès Google Sheets