diff options
Diffstat (limited to 'python/position_file_bowdst.py')
| -rw-r--r-- | python/position_file_bowdst.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/python/position_file_bowdst.py b/python/position_file_bowdst.py index 100f9627..b440e59d 100644 --- a/python/position_file_bowdst.py +++ b/python/position_file_bowdst.py @@ -22,18 +22,20 @@ def build_line(obj, asset_type): def process_upload(positions, upload): attachments = [] + if upload: + sftp = SftpClient.from_creds("hm_globeop", folder="incoming") + for asset_type, trades in positions.items(): buf = StringIO() csvwriter = csv.writer(buf) csvwriter.writerow(POSITION_HEADERS[asset_type]) csvwriter.writerows(build_line(trade, asset_type) for trade in trades) buf = buf.getvalue().encode() - fname = f"HEDGEMARK.POSITION.BOS_PAT_BOWDOIN.{datetime.datetime.now():%Y%m%d.%H%M%S}.{asset_type.capitalize()}Deal.PositionsAsOf{args.date}.csv" + timestamp = datetime.datetime.now() + fname = f"HEDGEMARK.POSITION.BOS_PAT_BOWDOIN.{timestamp:%Y%m%d.%H%M%S}.{asset_type.capitalize()}Deal.PositionsAsOf{args.date}.csv" if upload: - sftp = SftpClient.from_creds("hm_globeop") - sftp.client.chdir("incoming") sftp.put(buf, fname) - base_dir = DAILY_DIR / str(datetime.date.today()) + base_dir = DAILY_DIR / f"{timestamp:%Y-%m-%d}" base_dir.mkdir(exist_ok=True, parents=True) dest = base_dir / fname dest.write_bytes(buf) @@ -59,7 +61,6 @@ def process_upload(positions, upload): def positions_bond(conn, date): with conn.cursor() as c: c.execute("SELECT * FROM risk_positions(%s, null, 'BOWDST') ", (date,)) - trades = [] for row in c: obj = row._asdict() rename_keys( @@ -93,7 +94,6 @@ def positions_future(conn, date): "SELECT bbg_ticker, notional, code AS cp_code, cash_account, security_desc, currency, maturity FROM tmp LEFT JOIN accounts USING (fund) WHERE tmp.notional != 0 AND account_type='Future';", (date,), ) - trades = [] for row in c: obj = row._asdict() rename_keys( @@ -177,7 +177,8 @@ def positions_otc(conn, date): with conn.cursor() as c: for product_type, sql_query in _otc_queries.items(): c.execute(sql_query, (date,)) - yield from [_otc_serialize(row._asdict(), product_type, date) for row in c] + for row in c: + yield _otc_serialize(row._asdict(), product_type, date) if __name__ == "__main__": |
