
Aplicación de recordatorio de cumpleaños
El programa verifica si una persona tiene un cumpleaños en una semana y opcionalmente envía recordatorios al resto del grupo. Implica las funcionalidades necesarias para validar la entrada y enviar correos electrónicos. Este repositorio contiene 2 módulos donde bdayreminder.py implica estas funcionalidades mientras prueba. Consulte los requisitos para la importación de bibliotecas, paquetes y módulos adicionales antes de observar el uso de la aplicación o funciones, pruebas, trabajo cron y otros campos.
Se requiere Python 3.9.12 para ejecutar correctamente los módulos del paquete, las bibliotecas importadas y las funciones definidas. También se necesitan importaciones de varias bibliotecas como Dotnet, Pytest, por nombrar algunas. Algunas versiones requeridas se encuentran aquí, mientras que las que no se mencionan vienen con la versión Python usada. También inspeccione las variables de entorno y la autenticación antes de continuar. Para el uso adecuado del programa, es posible que necesite ejecutar Python3 en lugar del Python propuesto como se muestra en el uso. 1
1 Python o Python3 depende de la forma en que instaló Python en su máquina.
Para poder enviar correos electrónicos, deberá configurar las variables de entorno. Para hacer esto localmente, cree un archivo .env y agregue dos variables ENV con valores válidos, como este: 1
USR=<youremail>
PSW=<yourpassword> or <token>
1 Si enviará desde Gmail, para configurar la contraseña de variable de entorno adecuada, deberá crear un token. Más información sobre esto en la sección de autenticación.
Para poder enviar el correo electrónico después de configurar el correo electrónico de Gmail en el entorno variable, deberá crear un token. Los detalles sobre cómo hacerlo se pueden encontrar aquí.
Después de cumplir con los requisitos, el paquete de la aplicación se establece en su directorio y se ejecuta el terminal, tiene cuatro opciones 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 <Cets_File_Path> debería verse así - DataSets/Data_20.CSV, pero en su directorio. La ruta completa para mí sería /users/aurimasnausedas/documents/python/birthdayreminderapp/datasets/data_20.csv
2 El módulo principal toma dos argumentos cuando se ejecuta desde la consola.
3 Los datos utilizados para ejemplos fueron data_20.csv el 23 de junio de 2022.
Una descripción general de las funciones encontradas dentro de un módulo - bdayreminder.py :
Las explicaciones en profundidad de las funciones se pueden encontrar dentro de un módulo: bdayreminder.py.
Hay tres conjuntos de datos posibles para usar. Estos son Data_20 de 20 destinatarios, Data_50 de 50 destinatarios y Data_80 de 80 destinatarios.
Una descripción general de las funciones encontradas dentro de un módulo - Tests.py:
Al navegar a la carpeta del programa/aplicaciones donde se extrae - cumpleañosreminderApp - una carpeta antes de donde se mantiene las pruebas. By y uno puede ejecutar estos comandos de prueba:
>>> pyflakes .
>>> pyflakes Tests/tests.py
>>> python -m pytest Tests/tests.py
Podría surgir algunos errores como:
>>> 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
Todavía hay más, estos serían los más comunes.
Para construir el trabajo cron en la ejecución de la terminal Mac:
>>> crontab -e
La sintaxis para Cronjob al ingresar al terminal podría verse así: 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 <Rirectory_To_App> - Debe ser el directorio donde la carpeta BirthrenyreminderApp es como/usuarios/aurimasnausedas/documentos/python/birthdlereminderappapp
2 <Rirectory_to_python> Debería estar donde instaló Python en su máquina como/usuarios/aurimasnausedas/opt/miniconda3/envs/simétrico/bin/python
3 <Data_file_path> debe ser el conjunto de datos en el directorio de APP como In/Users/AuriMasnausedas/Documents/Python/BirthdyreminderApp al configurarlo en DataSets/Data_20.CSV
La personalización de sintaxis para el trabajo cron se puede verificar aquí.
La carpeta pública contiene tres archivos:
El logotipo de la aplicación de recordatorio de cumpleaños se puede encontrar aquí.
La licencia del MIT