blob: e12646cba93095c79af07138b8084864248ba54b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
from serenitas.utils.remote import SftpClient
from trade_dataclasses import Deal, DealType, BbgDeal
import csv
from stat import S_ISREG
def trade_booking_process(file_handle, index, asset_class):
deal = Deal[DealType(asset_class)]
for row in csv.DictReader(file_handle):
line = {"bbg_ticket_id": index, **row}
trade = deal.from_bbg_line(line)
trade.stage()
deal.commit()
def get_bbg_id(name):
return name.split("_", 1)[1]
if __name__ == "__main__":
import time
sftp = SftpClient.from_creds("bbg")
while True:
for f in sftp.client.listdir_iter("/"):
if S_ISREG(f.st_mode):
if (bbg_id := get_bbg_id(f.filename)) not in BbgDeal._cache:
with sftp.client.open(f.filename) as fh:
trade_booking_process(fh, bbg_id, f.filename.split("-", 1)[0])
BbgDeal._cache[bbg_id] = None
time.sleep(60)
|