import argparse import datetime from serenitas.ops.trade_dataclasses import BondDeal from serenitas.ops.funds import CTM def main(trade_date, upload): with BondDeal._conn.cursor() as c, BondDeal._conn.cursor() as d: c.execute( "SELECT id FROM bonds LEFT JOIN counterparties ON cp_code=code " "WHERE trade_date=%s AND ctm_code IS NOT NULL AND not emailed", (trade_date,), ) for (tid,) in c: trade = BondDeal.from_tradeid(tid) CTM.stage(trade) d.execute("UPDATE bonds SET emailed=True WHERE id=%s", (tid,)) if not CTM.staging_queue: return buf, dest = CTM.build_buffer() if upload: CTM.upload(buf) BondDeal._conn.commit() if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "trade_date", type=datetime.date.fromisoformat, default=datetime.date.today(), ) parser.add_argument( "-n", "--no-upload", action="store_true", help="do not upload to CTM" ) args = parser.parse_args() main(args.trade_date, not args.no_upload)