from serenitas.utils.db import dawn_engine, dbconn from serenitas.utils.exchange import ExchangeMessage, FileAttachment from exchangelib import HTMLBody import pandas as pd from io import StringIO import datetime import argparse from pandas.tseries.offsets import BDay from serenitas.ops.trade_dataclasses import BondDeal from serenitas.ops.funds import CTM if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "trade_date", type=datetime.date.fromisoformat, default=datetime.date.today(), ) args = parser.parse_args() dawndb = dbconn("dawndb") df = pd.read_sql_query( "SELECT ba.id, allocated, emailed FROM bonds LEFT JOIN bond_allocation ba ON bonds.id=ba.tradeid LEFT JOIN counterparties c ON cp_code=c.code WHERE trade_date=%s AND ctm_code IS NOT null;", con=dawn_engine, params=(args.trade_date,), ) with dawndb.cursor() as d: for row in df.itertuples(): CTM.stage(BondDeal.from_allocationid(row.id)) buf, dest = CTM.build_buffer() CTM.upload(buf)