1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
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)
|