
Application de rappel d'anniversaire
Le programme vérifie si une personne a un anniversaire en une semaine et envoie éventuellement des rappels au reste du groupe. Il implique les fonctionnalités nécessaires pour valider l'entrée et envoyer des e-mails. Ce référentiel contient 2 modules où BdayReminder.py implique ces fonctionnalités tandis que Tests.py teste le package. Veuillez vous référer aux exigences d'importation de bibliothèques, de packages et de modules d'addition avant de consulter l'utilisation de l'application ou des fonctions, des tests, du travail CRON et d'autres champs.
Python 3.9.12 est nécessaire pour exécuter correctement les modules du package, les bibliothèques importées et les fonctions définies. Des importations de plusieurs bibliothèques comme DOTNET, pytest pour n'en nommer que quelques-unes sont également nécessaires. Certaines versions requises sont trouvées ici alors que celles qui ne sont pas mentionnées sont livrées avec la version Python utilisée. Inspectez également les variables de l'environnement et l'authentification avant de poursuivre. Pour une utilisation appropriée du programme, vous devrez peut-être exécuter Python3 plutôt que Python proposé comme indiqué dans l'utilisation. 1
1 Python ou Python3 dépend de la façon dont vous avez installé Python sur votre machine.
Pour pouvoir envoyer des e-mails, vous devrez configurer des variables d'environnement. Pour ce faire localement, veuillez créer un fichier .env et y ajouter deux variables Env avec des valeurs valides, comme celle-ci: 1
USR=<youremail>
PSW=<yourpassword> or <token>
1 Si vous envoyez à partir de Gmail, puis pour configurer le mot de passe de variable d'environnement approprié, vous devrez créer un jeton. Plus d'informations à ce sujet dans la section d'authentification.
Pour pouvoir envoyer l'e-mail après la définition de l'e-mail Gmail à la variable d'environnement, vous devrez créer un jeton. Des détails sur la façon de le faire peuvent être trouvés ici.
Une fois les exigences satisfaites, le package d'application est défini dans votre répertoire et le terminal est exécuté, vous avez quatre options 1,2,3 :
>>> python bdayreminder.py <data_file_path>
Choose 1 to validate if input data file is correct or 2 to check for upcoming birthdays and send respective emails
>>> 1
ERROR: Invalid email for Laura Dreyfuss at row 6
ERROR: Empty name field is for email [email protected] at row 7
ERROR: Invalid date for Anna Higgins at row 11. Date given is 02-30
ERROR: Date is in the future for Tom Brady at row 12. Date given is 2075-10-22
ERROR: Invalid email for Ching Yeung Michael Tam at row 19
'''
'''
>>> python bdayreminder.py <data_file_path>
Choose 1 to validate if input data file is correct or 2 to check for upcoming birthdays and send respective emails
>>> 2
Kai Yuen Leung will have birthday in a week.
Patrick Kienzle will have birthday in a week.
Emails sent successfully.
>>> python bdayreminder.py <data_file_path> 3
Choose 1 to validate if input data file is correct or 2 to check for upcoming birthdays and send respective emails
>>> 3
Please choose either 1 or 2
>>> 1
ERROR: Invalid email for Laura Dreyfuss at row 6
ERROR: Empty name field is for email [email protected] at row 7
ERROR: Invalid date for Anna Higgins at row 11. Date given is 02-30
ERROR: Date is in the future for Tom Brady at row 12. Date given is 2075-10-22
ERROR: Invalid email for Ching Yeung Michael Tam at row 19
>>> python bdayreminder.py <data_file_path> 1
ERROR: Invalid email for Laura Dreyfuss at row 6
ERROR: Empty name field is for email [email protected] at row 7
ERROR: Invalid date for Anna Higgins at row 11. Date given is 02-30
ERROR: Date is in the future for Tom Brady at row 12. Date given is 2075-10-22
ERROR: Invalid email for Ching Yeung Michael Tam at row 19
>>> python bdayreminder.py <data_file_path> 2
Kai Yuen Leung will have birthday in a week.
Patrick Kienzle will have birthday in a week.
Emails sent successfully.
1 <sata_file_path> devrait ressembler à ceci - DataSets / data_20.csv, mais dans votre répertoire. Le chemin complet pour moi serait / users/aurimasnausedas/documents/python/birthdayreminderapp/datasets/data_20.csv
2 Le module principal prend deux arguments lorsqu'il est exécuté à partir de la console.
3 Les données utilisées pour les exemples étaient DATA_20.csv le 23 juin 2022.
Un aperçu des fonctions trouvées à l'intérieur d'un module - bdayReminder.py :
En profondeur, des explications des fonctions peuvent être trouvées à l'intérieur d'un module - bdayReminder.py.
Il y a trois ensembles de données possibles à utiliser. Ce sont des DATA_20 de 20 destinataires, Data_50 de 50 destinataires et DATA_80 de 80 destinataires.
Un aperçu des fonctions trouvées dans un module - tests.py:
En naviguant vers le dossier Program / App où il est extrait - BirthdayReminderApp - Un dossier avant où Tests.py est tenu et on peut exécuter ces commandes de test:
>>> pyflakes .
>>> pyflakes Tests/tests.py
>>> python -m pytest Tests/tests.py
Il pourrait survenir quelques erreurs comme:
>>> python bdayreminder.py Datasets/data_20.json 1
Traceback (most recent call last):
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 237, in <module>
run(arg_path, cron_input)
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 215, in run
raise Exception('ERROR: Wrong data format file')
Exception: ERROR: Wrong data format file
>>> python bdayreminder.py Datasets/data_13.csv 1
Traceback (most recent call last):
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 237, in <module>
run(arg_path, cron_input)
File "/Users/aurimasnausedas/Documents/Python/BirthdayReminderApp/bdayreminder.py", line 199, in run
raise Exception('ERROR: File doesn't exist')
Exception: ERROR: File doesn't exist
>>> python bdayreminder.py Datasets/data_20.csv versada
Argument passed not an integer
Il y en a encore plus, ce serait le plus courant.
Pour construire un travail Cron dans Mac Terminal Run:
>>> crontab -e
La syntaxe pour Cronjob lors de l'entrée du terminal pourrait ressembler à ceci: 1,2,3
>>> 0 6 * * * cd <directory_to_app> && <directory_to_python> bdayreminder.py <data_file_path> 2
[Optional] >>> 0 6 * * * cd <directory_to_app> && <directory_to_python> bdayreminder.py <data_file_path> 2 >> Public/birthdays.txt
1 <répertoire_to_app> - devrait être le répertoire où le dossier BirthdayReminderApp est comme / utilisateurs / aurimasnausedas / documents / python / anniversaireReminderApp
2 <répertoire_to_python> devrait être l'endroit où vous avez installé Python sur votre machine comme / utilisateurs / aurimasnaUsedas / opt / miniconda3 / envs / symétric / bin / python
3 <sata_file_path> devrait être l'ensemble de données dans le répertoire de l'application comme dans / utilisateurs / aurimasnausedas / documents / python / anniversaireReminderApp en les définissant sur DataSets / data_20.csv
La personnalisation de la syntaxe pour le travail CRON peut être vérifiée ici.
Le dossier public contient trois fichiers:
Le logo de la demande de rappel d'anniversaire peut être trouvé ici.
La licence MIT