Package: school-transport-application-form-tool
School Transport Application Form ToolSchool Transport Application Form Toolest 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).scriptPythonde typeinterface en ligne de commande.L'Union des Parents d'ÉlèvesduLycée Français International Marguerite Durasmet 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 :AccueilPremier EnfantPremier ParentCotisation ObligatoireConfirmation de la SoumissionCe formulaire en ligne est décliné en 4 langues :AnglaisCoréenFrançaisVietnamienL'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_registrationpermet d'aggréger les réponses aux formulaires en un seul jeu de données.InstallationL'applicationUPMD School Bus Registration Aggregatorest un scriptPythonde typeinterface en ligne de commande.Cette application estdisplonible en lignecommepaquetdans ledépôttiers officielPython Package Indexrecensant tous les paquets Pythonlibres.Son installation s'effectue en ligne de commande via l'outilpipenv:$pipenvinstallupmd-schoolbus-registration-aggregator_Note: vous prendrez soin d'installer préalablement les programmespipetpipenv.*Par exemple :# Create a Python virtual environment$pipenvshell--three
Creatingavirtualenvforthisproject...
Pipfile:/Users/dcaune/.local/bin/upmd/Pipfile
Using/usr/local/bin/python3.7(3.7.3)tocreatevirtualenv...
⠋Creatingvirtualenvironment...Usingbaseprefix'/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7'Newpythonexecutablein/Users/dcaune/.virtualenvs/upmd-2tdys9Pu/bin/python3.7
Alsocreatingexecutablein/Users/dcaune/.virtualenvs/upmd-2tdys9Pu/bin/python
Installingsetuptools,pip,wheel...done.
Runningvirtualenvwithinterpreter/usr/local/bin/python3.7

✔Successfullycreatedvirtualenvironment!
Virtualenvlocation:/Users/dcaune/.virtualenvs/upmd-2tdys9Pu
CreatingaPipfileforthisproject...
WARNING:Executingascriptthatisloadinglibcryptoinanunsafeway.ThiswillfailinafutureversionofmacOS.SettheLIBRESSL_REDIRECT_STUB_ABORT=1intheenvironmenttoforcethisintoanerror.
Launchingsubshellinvirtualenvironment...

Thedefaultinteractiveshellisnowzsh.
Toupdateyouraccounttousezsh,pleaserun`chsh-s/bin/zsh`.
Formoredetails,pleasevisithttps://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$pipenvinstallupmd-schoolbus-registration-aggregator
Installingupmd-schoolbus-registration-aggregator…
Addingupmd-schoolbus-registration-aggregatortoPipfile's[packages]…
✔InstallationSucceeded
Pipfile.locknotfound,creating…
Locking[dev-packages]dependencies…
Locking[packages]dependencies…
✔Success!
UpdatedPipfile.lock(a01b6b)!
InstallingdependenciesfromPipfile.lock(a01b6b)…🐍▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉45/45—00:00:12ConfigurationVous aurez besoin d'autoriser cette application à utiliser l'API Google Sheets. Pour ce faire vous aurez besoin d'enregister un nouveauCloud Platformce qui activera automatiquement l'API Google Sheets pour ce projet.Rendez-vous à l'adressehttps://developers.google.com/sheets/api/quickstart/pythonet cliquez sur le boutonEnable the Google Sheets API:Copiez le fichier téléchargécredentials.jsonet 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][-fFILE][-lLOCALE][-cFILE][-iID][-oID][--smtp-hostnameSMTP_HOSTNAME][--smtp-usernameSMTP_USERNAME][--smtp-portSMTP_PORT]--email-template-pathEMAIL_TEMPLATE_PATH

SchoolBusRegistrationAggregator

optionalarguments:-h,--helpshowthishelpmessageandexit-fFILE,--fileFILEspecifythepathandnameoftheCSVfilecontaininginformationaboutchildrenandparents-lLOCALE,--localeLOCALEspecifythelocale(ISO639-3code)correspondingtothelanguageoftheregistrationform-cFILE,--google-credentialsFILEabsolutepathandnameoftheGooglecredentialsfile-iID,--input-google-spreadsheet-idIDspecifytheidentificationoftheGooglespreadsheetcontainingtheresponsestotheregistrationforms-oID,--output-google-spreadsheet-idIDspecifytheidentificationoftheGooglespreadsheettopopulatechildrenandparentsfromtheregistrationforms--smtp-hostnameSMTP_HOSTNAMEspecifythehostnameofthemachineonwhichtheSMTPserverisrunning--smtp-usernameSMTP_USERNAMEspecifytheusername/emailaddresstoconnecttotheSMPTserver--smtp-portSMTP_PORTspecifytheTCPportorthelocalUnix-domainsocketfileextensiononwhichtheSMTPserverislisteningforconnections--email-template-pathEMAIL_TEMPLATE_PATHspecifytheabsolutepathnameofthelocalizedHTMLe-mailtemplates--looprequirethescripttoloopforeveruntiltheuserterminatesitwithCtrl-CSaisie des Informations pour envoyer les Courriels aux ParentsL'applicationUPMD School Bus Registration Aggregatorva 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 serveurSimple Mail Transfer Protocol(SMTP)pour pouvoir envoyer les courriels.Lors de sa première exécution, l'applicationUPMD School Bus Registration Aggregatorvous demandera de saisir ces informations :Par exemple :(upmd)bash-3.2$aggregate_bus_registration
EnteryourSMTPusername:botnet@upmd.fr
EnteryourSMTPpassword:
EntertheSMTPhostname:smtp.gmail.comAuthorisation d'Accès aux Documents Google SheetsLa première fois que vous exécuterez l'application, vous aurez besoin d'autoriser l'applicationUPMD 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'applicationUPMD School Bus Registration Aggregatorva aggréger toutes les réponses (encore appeléMaster List) :Réponses aux FormulairesMaster ListLors de sa première exécution, l'applicationUPMD School Bus Registration Aggregatorva 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'ApplicationVous pouvez exécuter l'applicationUPMD School Bus Registration Aggregatoravec l'option--looppour qu'elle ne s'arrête jamais :(upmd)bash-3.2$aggregate_bus_registration-i1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs-o1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU--loop(...)2020-04-0615:48:45,743[INFO]URLbeingrequested:GEThttps://www.googleapis.com/discovery/v1/apis/sheets/v4/rest2020-04-0615:48:47,084[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs?alt=json2020-04-0615:48:48,112[INFO]Fetchingregistrationsfromthesheet"kor"...2020-04-0615:48:48,119[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/kor%21A2%3AAF?alt=json2020-04-0615:48:49,500[INFO]Fetchingregistrationsfromthesheet"vie"...2020-04-0615:48:49,504[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/vie%21A2%3AAF?alt=json2020-04-0615:48:50,419[INFO]Fetchingregistrationsfromthesheet"fra"...2020-04-0615:48:50,422[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/fra%21A2%3AAF?alt=json2020-04-0615:48:51,308[INFO]Fetchingregistrationsfromthesheet"eng"...2020-04-0615:48:51,311[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1hhEeBCyTu6rsEkDQ_0DHzbizdLvNh2SP5hsgZk0YLxs/values/eng%21A2%3AAF?alt=json2020-04-0615:48:51,750[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU?alt=json2020-04-0615:48:52,571[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A3%3AM?alt=json2020-04-0615:48:53,083[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU?alt=json2020-04-0615:48:53,557[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A1%3AA?alt=json2020-04-0615:48:54,025[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A9%3AM9?alt=json2020-04-0615:48:54,413[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A10%3AM10?alt=json2020-04-0615:48:54,725[INFO]Sendingemailin"fra"todaniel.caune@gmail.com...2020-04-0615:49:09,167[INFO]URLbeingrequested:GEThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU?alt=json2020-04-0615:49:10,082[INFO]URLbeingrequested:PUThttps://sheets.googleapis.com/v4/spreadsheets/1bXoZDpq8g9D0lewfn8MRxIOR0-IWsJ9gUbG1vL1JZXU/values/Children%20%26%20Parents%21A10?valueInputOption=RAW&alt=json2020-04-0615:49:10,491[INFO]Breathingalittlebit...Géocodage des Adresseshttps://console.developers.google.com/google/maps-apis/new