diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/ack_checker.py | 36 | ||||
| -rw-r--r-- | python/position_file_bowdst.py | 9 |
2 files changed, 26 insertions, 19 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": diff --git a/python/position_file_bowdst.py b/python/position_file_bowdst.py index 738d653d..32adf6d6 100644 --- a/python/position_file_bowdst.py +++ b/python/position_file_bowdst.py @@ -27,14 +27,6 @@ def build_line(obj, asset_type): return [obj.get(h, None) for h in HEADERS[asset_type]] -# variables - -date = datetime.date(2021, 10, 29) - - -dawndb = dbconn("dawndb") - - HEADERS = { "bond": [ "AccountNumber", @@ -304,7 +296,6 @@ def positions_otc(positions, conn, date): ) positions["otc"].append(obj) - # process_upload(otc_trades, "otc") if __name__ == "__main__": |
