#!/usr/bin/env python3 """ If daily processing crashed, files will be in 2 directories, trigger an email if a file is left over """ import pprint import pathlib import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import shutil import os THIS_DIRECTORY = pathlib.Path(__file__).parent INCOMING_DIRECTORY = THIS_DIRECTORY / "incoming_orders" SHIPMENTS_DIRECTORY = THIS_DIRECTORY / "incoming_shipments" SOH_IMPORT_DIRECTORY = THIS_DIRECTORY / "to_import_SOH" NEW_FILES_DIRECTORY = THIS_DIRECTORY / "new_files_from_ftp" PROBLEMS_DIRECTORY = THIS_DIRECTORY / "problems" SOH_IMPORT_DIRECTORY = THIS_DIRECTORY / "to_import_SOH" SDH_IMPORT_DIRECTORY = THIS_DIRECTORY / "to_import_SDH" def main(): """ Check for leftover files which means something unexpected happened. Then clean the files so there isn't a mess for the next run """ file_count = [] for file in INCOMING_DIRECTORY.iterdir(): if file.name[-4:] == '.csv':#move the file that drove the process file_count.append(f'order: {file.name}') shutil.move(file, PROBLEMS_DIRECTORY / file.name) for file in SOH_IMPORT_DIRECTORY.iterdir():#delete any import files we were in the middle of if file.name[-4:] == '.dat': os.remove(file) for file in SHIPMENTS_DIRECTORY.iterdir(): if file.name[-4:] == '.csv': file_count.append(f'shipment: {file.name}') shutil.move(file, PROBLEMS_DIRECTORY / file.name) for file in SDH_IMPORT_DIRECTORY.iterdir(): if file.name[-4:] == '.dat': os.remove(file) for file in NEW_FILES_DIRECTORY.iterdir(): if file.name[-4:] == '.csv': file_count.append(f'new file: {file.name}') shutil.move(file, PROBLEMS_DIRECTORY / file.name) if file_count: file_alert(file_count) def file_alert(file_list): file_string = ', '.join(file_list) msg = MIMEMultipart() msg['Subject'] = 'Source ecommerce: Files Left Over' msg['Precedence'] = 'bulk' msg['From'] = 'x3report@stashtea.com' msg['To'] = 'bleeson@stashtea.com' #msg['CC'] = 'bleeson@stashtea.com' emailtext = f'files: {file_string}' msg.attach(MIMEText(emailtext, 'plain')) with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp: smtp.login(user='x3reportmk2@yamamotoyama.com', password=r'n