aboutsummaryrefslogtreecommitdiffstats
path: root/python/ack_checker.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/ack_checker.py')
-rw-r--r--python/ack_checker.py36
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":