from bowdst import get_dir, download_messages from csv import DictReader from citco_ops.bowdst import BowdstWire, IsoselWire from citco_ops.cash import IsoselCashReport, dt_from_fname as nt_key import datetime def dt_from_fname(f): return datetime.datetime.strptime( f.name.split("_")[1].split(".")[0], "%Y%m%d%H%M%S" ) def load_bowdst_wire_report(workdate: datetime.date): p = max( [f for f in get_dir(workdate).iterdir() if "BowdstWires" in f.name], key=dt_from_fname, default=None, ) if not p: # No files available return with open(p) as fh: reader = DictReader(fh) for line in reader: BowdstWire.from_nexen_line(line).stage() BowdstWire.commit() def load_isosel_wire_report(workdate: datetime.date): p = max( [f for f in get_dir(workdate).iterdir() if "custodian_wires" in f.name], key=nt_key, default=None, ) if not p: # No files available return with open(p) as fh: reader = DictReader(fh) for line in reader: if "sponsor" in line["narrative"].lower(): IsoselWire.from_passport_line(line).stage() IsoselWire.commit() if __name__ == "__main__": import argparse from serenitas.utils.exchange import ExchangeMessage parser = argparse.ArgumentParser() parser.add_argument( "workdate", nargs="?", type=datetime.date.fromisoformat, default=datetime.date.today(), help="working date", ) args = parser.parse_args() em = ExchangeMessage() download_messages(em) IsoselCashReport.download_reports(args.workdate) load_bowdst_wire_report(args.workdate) load_isosel_wire_report(args.workdate)