diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..437e09b --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ + +\.env + +\.idea/ + +perdiem\.log + +*.xlsx diff --git a/README.md b/README.md index fcaee39..2447196 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ perDiem + +just create a crontab entry for the script + +this will send per diem report every first of month at 2AM + +0 2 1 * * /usr/bin/python3 /home/user/perDiem/perdiem.py >> /home/user/perDiem/perdiem.out 2>&1 \ No newline at end of file diff --git a/perdiem.py b/perdiem.py new file mode 100644 index 0000000..dc9bfff --- /dev/null +++ b/perdiem.py @@ -0,0 +1,73 @@ +import os +import logging +from datetime import datetime +from pyutl.sendmail import SendMail +from pyutl.localenv import localenv +localenv.load() + +HOME_DIR = os.path.dirname(os.path.abspath(__file__)) +THIS_MONTH = datetime.now().strftime("%m%Y") +FILE = [os.path.join(HOME_DIR, f'viatico_{THIS_MONTH}.xlsx')] +LOG_FILE = os.path.join(HOME_DIR, 'perdiem.log') + +logging.basicConfig(filename=LOG_FILE, filemode='a', format='%(asctime)s %(module)s %(message)s', level=logging.DEBUG) + +MAIL_HOST = localenv.get('MAIL_HOST') +MAIL_PORT = localenv.get('MAIL_PORT') +MAIL_USR = localenv.get('MAIL_USR') +MAIL_PASS = localenv.get('MAIL_PASS') +OK_DESTINY = localenv.get('OK_DESTINY') +ERR_DESTINY = localenv.get('ERR_DESTINY') + + +ok_message = """ + +

Buen Dia

+
+

Adjunto Reporte de Viatico.

+
+

Gracias & Saludos.

+

automatic mailer

+ + +""" + +err_message = """ + + No has depositado el Reporte de Viatico. + + +""" + + +def validate(): + + auth_info = (MAIL_HOST, MAIL_PORT, MAIL_USR, MAIL_PASS) + try: + _ = open(FILE[0]) + to_address = [OK_DESTINY] + message = ok_message + return True, auth_info, to_address, message + except FileNotFoundError: + to_address = [ERR_DESTINY] + message = err_message + + return False, auth_info, to_address, message + + +def main(): + try: + fe, ai, ta, msg = validate() + logging.info(f'validation has been done file exists {fe}') + logging.debug(f'authenticate using {ai}') + with SendMail(ai) as mail: + mail.content(MAIL_USR, ta, f'Solicitud de Viaticos {THIS_MONTH}', msg) + if fe: + mail.attach(FILE) + mail.send() + except Exception as e: + logging.exception(e) + + +if __name__ == '__main__': + main()