You are on page 1of 2

import pandas as pd

import sys
import time
import datetime
import smtplib
import ssl
import json

def main(f_in = 'data_IN.csv', f_out = 'data_converted_IN.txt', bank_code_list =


'Bank_Code.CSV'):
dtype = str
data = pd.read_csv(f_in, dtype=dtype)

bank_code = pd.read_csv(bank_code_list, dtype=dtype, index_col=0,


encoding='cp1258').fillna('')
f_IN = open(f_out, 'w')
formatter_IN = ':20:{}\n:23B:CRED\n:32A:{}VND{},\n:50K:/{}\n{}\n:56A:{}\n:52A:
{}\n:57A:VCBCVNVX\n:59:/{}\n{}\n:70:{}\n'
swift_code = ''
head = '{1:F01VCBCVNVXAXXX0000000000}{2:I210VCBCVNVXXXXXN}{3:
{108:000XXXXXXXXXXXXX}}{4:\n'
tail = '-}\n'
merged = data.merge(bank_code, left_on='FROM_BANK_CODE', right_on='Bank_Code')
tran_time = datetime.datetime.today().strftime('%y%m%d')
for lab, row in merged.iterrows():
f_IN.write(head + formatter_IN.format(row['NAPAS_REF_NO'].lstrip(),
tran_time, row['TRAN_AMOUNT'].lstrip(),\
row['SOURCE_AC_NO'].lstrip(),
row['CUSTOMER_NAME'].lstrip(), row['SWIFT_Code'].lstrip(),\
row['SWIFT_Code'].lstrip(),
row['DEST_AC_NO'].lstrip(), row['DEST_CUST_NAME'].lstrip(),\
row['NARRATIVE'].lstrip()) + tail)
f_IN.close()

def alert(mess):
'''sending alert to user by email'''
with open('mail_info.json') as json_file:
mail_info = json.load(json_file)
if not mail_info['alert']:
return
port = mail_info['port']
password = mail_info['password']
sender = mail_info['user']
smtp_server = mail_info['host']
receivers = mail_info['receivers']
secure = mail_info['secure']
message = mail_info['message']
context = ssl.create_default_context()

content = '''Subject: NAPA DATA CONVERT ALERT\nTo: {}\n\


n{}'''.format(receivers, message[mess])
log = open('mail_logs.txt', 'a')
date_time = datetime.datetime.today().strftime('%d/%m/%y')
if (secure == 'SSL'):
try:
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender, password)
#send email
server.sendmail(sender, receivers, content)
except Exception as e:
log.write(time.strftime('%H:%M:%S ') + date_time + ' ' + str(e) + '\n')
elif (secure == 'TLS'):
try:
server = smtplib.SMTP(smtp_server, port)
server.ehlo()
server.starttls(context=context)
server.ehlo()
server.login(sender, password)
print('Email content:')
print(content)
print('Sending email...')
server.sendmail(sender, receivers, content)
except Exception as e:
log.write(time.strftime('%H:%M:%S ') + date_time + ' ' + str(e) + '\n')
finally:
pass
#server.quit()
else:
try:
with smtplib.SMTP(smtp_server, port) as server:
#server.login(sender, password)
#send email
server.sendmail(sender, receivers, content)
server.quit()
except Exception as e:
log.write(time.strftime('%H:%M:%S ') + date_time + ' ' + str(e) + '\n')
log.close()

if __name__ == '__main__':
start = time.time()

try:
if len(sys.argv) > 1:
f_in = sys.argv[1]
f_out = sys.argv[2]
bank_code = sys.argv[3]
main(f_in=f_in, f_out=f_out, bank_code_list=bank_code)
else:
main()
alert('success')
except:
alert('fail')
print('Process time {}'.format(round(time.time() - start, 2)))

You might also like