from serenitas.ops.funds import Service from serenitas.ops.headers import HEADERS from .headers import get_bny_headers class BNY(Service, service_name="BNY"): filepath_pattern = "BNY.{timestamp:%Y%m%d.%H%M%S}.{trade_tag}.csv" credential = "bny_upload" @classmethod def set_headers(cls, trade_type): cls.headers = get_bny_headers(trade_type) @classmethod def push_trade(cls, trade, action): cls.staging_queue.append(trade.to_bny(action)) @classmethod def upload(cls, buf, dest): super().upload(buf, dest) em = ExchangeMessage() em.send_email( "BNY Upload Receipt", "", to_recipients="NYOPs@lmcg.com", attach=(FileAttachment(name=dest, content=buf),), ) class UMB(Service, service_name="UMB"): filepath_pattern = "Serenitas.ALL.{timestamp:%Y%m%d.%H%M%S}.csv" credential = "umb" @classmethod def set_headers(cls, *args): cls.headers = HEADERS["bond"] + [ "DTC", "AccruedPayment", "PrincipalPayment", "CurrentFace", ] @classmethod def push_trade(cls, trade, action): cls.staging_queue.append(trade.to_umb(action)) def get_service(account_counterparty): match account_counterparty: case "UMB": return UMB case "BONY": return BNY case "BBH": return Service["BRINKER"] case _: return None