diff options
Diffstat (limited to 'python/ack_checker.py')
| -rw-r--r-- | python/ack_checker.py | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/python/ack_checker.py b/python/ack_checker.py index 7bb6c878..4844fa72 100644 --- a/python/ack_checker.py +++ b/python/ack_checker.py @@ -3,24 +3,40 @@ import datetime import re from csv import reader from io import BytesIO -from serenitas.utils.remote import FtpClient +from serenitas.utils.remote import SftpClient, FtpClient from serenitas.utils.db import dbconn -def ack_check(date: datetime.date, conn): +def serenitas_files(date): ftp = FtpClient.from_creds("globeop") ftp.client.cwd("outgoing") - files = [ - f for f in ftp.client.nlst() if f.startswith(f"Serenitas.ALL.{date:%Y%m%d}") - ] + for f in ftp.client.nlst(): + if f.startswith(f"Serenitas.ALL.{date:%Y%m%d}"): + buf = BytesIO() + ftp.client.retrbinary("RETR " + f, buf.write) + buf.seek(0) + yield codecs.iterdecode(buf, "utf-8") + + +def bowdst_files(date): + sftp = SftpClient.from_creds("hm_globeop") + sftp.client.chdir("outgoing") + for f in sftp.client.listdir(): + if f.startswith(f"Bowdst.ALL.{date:%Y%m%d}"): + yield sftp.client.open(f) + + +def ack_check(date: datetime.date, conn): + files = list(serenitas_files(date)) + list(bowdst_files(date)) for f in files: - buf = BytesIO() - ftp.client.retrbinary("RETR " + f, buf.write) - buf.seek(0) - csv = reader(codecs.iterdecode(buf, "utf-8")) + csv = reader(f) for serenitas_id, action, dealtype, result, globeop_id, _, _ in csv: if action == "NEW" and result == "Loaded": - globeop_id = int(globeop_id) + # BOWDST globeop uses dealid with colon + try: + globeop_id = int(globeop_id) + except ValueError: + globeop_id = int(globeop_id.split()[1]) if m := re.match("[^0-9]*([0-9]*)", serenitas_id): serenitas_id = int(m.groups()[0]) if dealtype == "CreditDefaultSwapDeal": |
