import argparse import datetime from serenitas.ops.trade_dataclasses import BondDeal from serenitas.ops.funds import UMB def upload_to_umb(trade_date, upload): sql_query = ( "SELECT bonds.*, bond_allocation.notional, fund, custodian, " "cash_account, " "counterparties.name, dtc_number " "FROM bonds " "INNER JOIN bond_allocation ON bond_allocation.tradeid=bonds.id " "INNER JOIN accounts USING (code) " "INNER JOIN counterparties ON counterparties.code = bonds.cp_code " "WHERE fund= %s and trade_date = %s " ) with BondDeal._conn.cursor() as c: c.execute( sql_query, ( "SERCGMAST", args.trade_date, ), ) for row in c: UMB.stage(row._asdict(), trade_type="bond", redis_pipeline=None) buf, dest = UMB.build_buffer("bond") if upload: UMB.upload(buf, dest) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "trade_date", type=datetime.date.fromisoformat, default=datetime.date.today(), nargs="?", ) parser.add_argument( "-n", "--no-upload", action="store_true", help="do not upload just drop in the daily directory", default=False, ) args = parser.parse_args() upload_to_umb(args.trade_date, not args.no_upload)