blob: f97bd9084a85a1537cf2cf0fc16a0e6cdd2096f3 (
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
33
34
|
from io import StringIO
import csv
from serenitas.utils.env import DAILY_DIR
from serenitas.utils.remote import SftpClient
import datetime
from trade_dataclasses import CDSDeal, SwaptionDeal, TerminationDeal
from headers import MTM_HEADERS
deal_registry = {
"cds": CDSDeal,
"swaption": SwaptionDeal,
"termination": TerminationDeal,
}
def mtm_process_upload(tradeids, product_type):
objs = [
deal_registry[product_type].from_tradeid(tradeid).to_markit()
for tradeid in tradeids
]
buf = StringIO()
csvwriter = csv.writer(buf)
csvwriter.writerow(MTM_HEADERS[product_type])
csvwriter.writerows(
[obj.get(h, None) for h in MTM_HEADERS[product_type]] for obj in objs
)
buf = buf.getvalue().encode()
fname = (
f"MTM.{datetime.datetime.now():%Y%m%d.%H%M%S}.{product_type.capitalize()}.csv"
)
sftp = SftpClient.from_creds("mtm")
sftp.put(buf, fname)
dest = DAILY_DIR / str(datetime.date.today()) / fname
dest.write_bytes(buf)
|