diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/strat_cash_realloc.py | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/python/strat_cash_realloc.py b/python/strat_cash_realloc.py index bbe7bf89..2683133f 100644 --- a/python/strat_cash_realloc.py +++ b/python/strat_cash_realloc.py @@ -1,39 +1,18 @@ from serenitas.utils.db import dbconn -from serenitas.utils.env import DAILY_DIR from ops.funds import Fund import datetime -import csv -from io import StringIO from serenitas.analytics.dates import prev_business_day -from serenitas.utils.remote import SftpClient from collateral.common import CASH_STRATEGY_MAPPING, STRATEGY_CASH_MAPPING from serenitas.utils.misc import rename_keys -from csv_headers.globeop_upload import HEADERS - - -def process_upload(trades): - buf = StringIO() - csvwriter = csv.writer(buf) - headers = HEADERS["wire"] - csvwriter.writerow(headers) - csvwriter.writerows(trades) - buf = buf.getvalue().encode() - dest = Fund["bowdst"].get_filepath(DAILY_DIR, "wire") - dest.parent.mkdir(exist_ok=True) - dest.write_bytes(buf) - sftp = SftpClient.from_creds("hm_globeop") - sftp.client.chdir("incoming") - sftp.put(buf, dest.name) def generate_csv(date, conn): - headers = HEADERS["wire"] + bowdst = Fund["BOWDST"]() with conn.cursor() as c, conn.cursor() as d: c.execute( "SELECT vr.*, accounts2.custodian, accounts2.cp_code, pfm.folder AS dirty_strat FROM (SELECT sum(endqty) AS endqty, port, strat, custacctname, invid FROM valuation_reports v WHERE periodenddate =%s AND fund='BOWDST' AND invid IN ('USD', 'EUR') AND port NOT IN ('GFS_HELPER_BUSINESS_UNIT', 'CASH') GROUP BY (port, strat,custacctname, invid) HAVING sum(endqty) !=0) vr LEFT JOIN accounts2 ON custacctname=cash_account LEFT JOIN portfolio_folder_mapping pfm ON vr.strat::text=pfm.clean_folder where strat is not NULL;", (date,), ) - trades = [] for row in c: if row.strat not in CASH_STRATEGY_MAPPING.keys(): d.execute( @@ -80,11 +59,11 @@ def generate_csv(date, conn): offset["Deal Id"] = obj["Deal Id"] + "_O" offset["Amount"] = -obj["Amount"] offset["Folder"] = STRATEGY_CASH_MAPPING[obj["Folder"]] - trades.append([obj.get(h, None) for h in headers]) - trades.append([offset.get(h, None) for h in headers]) + bowdst.staging_queue.extend([obj, offset]) conn.commit() - if trades: - process_upload(trades) + if bowdst.staging_queue: + buf, dest = bowdst.build_buffer("wire") + bowdst.upload(buf, dest) if __name__ == "__main__": |
