School Transport Application Form Tool
Project description
School Transport Application Form Tool
School Transport Application Form Tool est un outil permettant de gérer les inscriptions de famille au transport scolaire d'une école.
récupérer les données des formulaires multilingues (Google Forms) d'inscriptions au transport scolaire d'une école et de les regrouper dans un seul tableau (Google Sheets).
script Python de type interface en ligne de commande.
L'Union des Parents d'Élèves du Lycée Français International Marguerite Duras met en place un formulaire en ligne permettant aux parents d'enregistrer leur(s) enfant(s) au transport scolaire.
Ce formulaire est décomposé en plusieurs sections dynamiques permettant à une famille d'inscrire jusqu'à 4 enfants, en référençant 1 ou 2 parents :
Accueil | Premier Enfant | Premier Parent | Cotisation Obligatoire | Confirmation de la Soumission |
---|---|---|---|---|
Ce formulaire en ligne est décliné en 4 langues :
L'UPMD utilise 4 Google Forms pour implémenter ces 4 formulaires dynamiques. Ces 4 formulaires sont configurés pour enregistrer les réponses des parents dans un document Google Sheets. Cependant, chaque formulaire Google Forms enregistre les réponses dans une feuille séparée du document Google Sheets.
Le script en ligne de commande (CLI) aggregate_bus_registration
permet d'aggréger les réponses aux formulaires en un seul jeu de données.
Installation
L'application UPMD School Bus Registration Aggregator est un script Python de type interface en ligne de commande.
Cette application est displonible en ligne comme paquet dans le dépôt tiers officiel Python Package Index recensant tous les paquets Python libres.
Son installation s'effectue en ligne de commande via l'outil pipenv
:
$ pipenv install upmd-schoolbus-registration-aggregator
_Note: vous prendrez soin d'installer préalablement les programmes pip
et pipenv
.*
Par exemple :
# Create a Python virtual environment
$ pipenv shell --three
Creating a virtualenv for this project...
Pipfile: /Users/dcaune/.local/bin/upmd/Pipfile
Using /usr/local/bin/python3.7 (3.7.3) to create virtualenv...
⠋ Creating virtual environment...Using base prefix '/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/dcaune/.virtualenvs/upmd-2tdys9Pu/bin/python3.7
Also creating executable in /Users/dcaune/.virtualenvs/upmd-2tdys9Pu/bin/python
Installing setuptools, pip, wheel...done.
Running virtualenv with interpreter /usr/local/bin/python3.7
✔ Successfully created virtual environment!
Virtualenv location: /Users/dcaune/.virtualenvs/upmd-2tdys9Pu
Creating a Pipfile for this project...
WARNING: Executing a script that is loading libcrypto in an unsafe way. This will fail in a future version of macOS. Set the LIBRESSL_REDIRECT_STUB_ABORT=1 in the environment to force this into an error.
Launching subshell in virtual environment...
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ . /Users/dcaune/.virtualenvs/upmd-2tdys9Pu/bin/activate
# Install UPMD School Bus Registration Aggregator application
(upmd) bash-3.2$ pipenv install upmd-schoolbus-registration-aggregator
Installing upmd-schoolbus-registration-aggregator…
Adding upmd-schoolbus-registration-aggregator to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (a01b6b)!
Installing dependencies from Pipfile.lock (a01b6b)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 45/45 — 00:00:12
Configuration
Vous aurez besoin d'autoriser cette application à utiliser l'API Google Sheets. Pour ce faire vous aurez besoin d'enregister un nouveau Cloud Platform ce qui activera automatiquement l'API Google Sheets pour ce projet.
Rendez-vous à l'adresse https://developers.google.com/sheets/api/quickstart/python et cliquez sur le bouton Enable the Google Sheets API :
Copiez le fichier téléchargé credentials.json
et placez-le dans le répertoire où vous avez installé UPMD School Bus Registration Aggregator.
Execution
$ aggregate_bus_registration --help
usage: aggregate_bus_registration [-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
School Bus Registration Aggregator
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 registration 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 registration forms
-o ID, --output-google-spreadsheet-id ID
specify the identification of the Google spreadsheet
to populate children and parents from the registration
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
Saisie des Informations pour envoyer les Courriels aux Parents
L'application UPMD School Bus Registration Aggregator va récupérer toutes les inscriptions des familles sauvegardées dans le document Google Sheets contenant les réponses aux différents formulaires. Cette application regroupera toutes ces inscriptions dans le second document Google Sheets (encore appelé Master List).
Pour chacune de ces inscriptions, l'application enverra un courriel de confirmation de réception à chacune des familles. L'application a besoin de connaître les propriétés de connexion à un serveur Simple Mail Transfer Protocol (SMTP) pour pouvoir envoyer les courriels.
Lors de sa première exécution, l'application UPMD School Bus Registration Aggregator vous demandera de saisir ces informations :
Par exemple :
(upmd) bash-3.2$ aggregate_bus_registration
Enter your SMTP username: botnet@upmd.fr
Enter your SMTP password:
Enter the SMTP hostname: smtp.gmail.com
Authorisation d'Accès aux Documents Google Sheets
La première fois que vous exécuterez l'application, vous aurez besoin d'autoriser l'application UPMD School Bus Registration Aggregator à accéder aux documents Google Sheets, celui dans lequel les réponses des parents aux formulairex d'inscription sont enregistrées, et celui dans lequel l'application UPMD School Bus Registration Aggregator va aggréger toutes les réponses (encore appelé Master List) :
Réponses aux Formulaires | Master List |
---|---|
Lors de sa première exécution, l'application UPMD School Bus Registration Aggregator va lancer votre navigateur préféré pour vous permettre de vous connecter à votre compte Google Mail ou Google Suite (association) et de donner l'autorisation demandée :
Exécution continuelle de l'Application
Vous pouvez exécuter l'application UPMD School Bus Registration Aggregator avec l'option --loop
pour qu'elle ne s'arrête jamais :
(upmd) bash-3.2$ aggregate_bus_registration -i 1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs -o 1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU --loop
(...)
2020-04-06 15:48:45,743 [INFO] URL being requested: GET https://www.googleapis.com/discovery/v1/apis/sheets/v4/rest
2020-04-06 15:48:47,084 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs?alt=json
2020-04-06 15:48:48,112 [INFO] Fetching registrations from the sheet "kor"...
2020-04-06 15:48:48,119 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/kor%21A2%3AAF?alt=json
2020-04-06 15:48:49,500 [INFO] Fetching registrations from the sheet "vie"...
2020-04-06 15:48:49,504 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/vie%21A2%3AAF?alt=json
2020-04-06 15:48:50,419 [INFO] Fetching registrations from the sheet "fra"...
2020-04-06 15:48:50,422 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/fra%21A2%3AAF?alt=json
2020-04-06 15:48:51,308 [INFO] Fetching registrations from the sheet "eng"...
2020-04-06 15:48:51,311 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/eng%21A2%3AAF?alt=json
2020-04-06 15:48:51,750 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU?alt=json
2020-04-06 15:48:52,571 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A3%3AM?alt=json
2020-04-06 15:48:53,083 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU?alt=json
2020-04-06 15:48:53,557 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A1%3AA?alt=json
2020-04-06 15:48:54,025 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A9%3AM9?alt=json
2020-04-06 15:48:54,413 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A10%3AM10?alt=json
2020-04-06 15:48:54,725 [INFO] Sending email in "fra" to daniel.caune@gmail.com...
2020-04-06 15:49:09,167 [INFO] URL being requested: GET https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU?alt=json
2020-04-06 15:49:10,082 [INFO] URL being requested: PUT https://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A10?valueInputOption=RAW&alt=json
2020-04-06 15:49:10,491 [INFO] Breathing a little bit...
Géocodage des Adresses
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file school-transport-application-form-tool-1.2.15.tar.gz
.
File metadata
- Download URL: school-transport-application-form-tool-1.2.15.tar.gz
- Upload date:
- Size: 662.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2357a1681b8336198fdd632ff53646843afcd21cc8139b243b1ef2864efeb418 |
|
MD5 | 5606c43e8e3f03ff63184504c4240610 |
|
BLAKE2b-256 | 531c8087fba55d71488f8b0e448e67d04141224ed70323bb2f85cc777d0a8d49 |
File details
Details for the file school_transport_application_form_tool-1.2.15-py3-none-any.whl
.
File metadata
- Download URL: school_transport_application_form_tool-1.2.15-py3-none-any.whl
- Upload date:
- Size: 661.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32079f6219079d5fadbe9858267fd430594a1031a137fb8867f31db01170655b |
|
MD5 | 39410102b30a7468702a2541ce9d2a09 |
|
BLAKE2b-256 | ff273c6864bc2afc4c77f5ae791457f42adbb7aa4ebe5da7dd61acd45b707b18 |