diff options
Diffstat (limited to 'python/report_ops')
| -rw-r--r-- | python/report_ops/__main__.py | 17 | ||||
| -rw-r--r-- | python/report_ops/misc.py | 5 | ||||
| -rw-r--r-- | python/report_ops/sma.py | 20 |
3 files changed, 18 insertions, 24 deletions
diff --git a/python/report_ops/__main__.py b/python/report_ops/__main__.py index 9b7af168..fb01e86d 100644 --- a/python/report_ops/__main__.py +++ b/python/report_ops/__main__.py @@ -19,6 +19,7 @@ from .cash import NTCashReport, UMBCashReport, BNYCashReport from .admin import AccruedReport, AllReport from .wires import BowdstWire, NTWire from .custodians import upload_to_custodian +from serenitas.utils.remote import Client logger = logging.getLogger(__name__) @@ -117,19 +118,3 @@ if args.send_to_custodians: upload_to_custodian(account, args.date, conn, not args.no_upload, em) except ValueError as e: logger.info(e) - -if args.send_positions: - conn = dbconn("dawndb") - for fund in ("ISOSEL", "BOWDST"): - for position_report in ( - BondPosition, - FuturePosition, - TranchePosition, - CDXPosition, - IRSwaptionPosition, - CDXSwaptionPosition, - ): - for position in position_report.gen_positions(cob, fund): - PositionReport.staging_queue.append(position.serialize("position")) - PositionReport.build_buffer(cob, fund, not args.no_upload) - PositionReport.staging_queue.clear() diff --git a/python/report_ops/misc.py b/python/report_ops/misc.py index 76ec9cbb..da7d61ac 100644 --- a/python/report_ops/misc.py +++ b/python/report_ops/misc.py @@ -12,6 +12,7 @@ _recipients = { "mbisoye@sscinc.com", "hedgemark.lmcg.ops@sscinc.com", "hm-operations@bnymellon.com", + "Hedgemark.OTC@sscinc.com", ), "SERCGMAST": ( "SERENITAS.FA@sscinc.com", @@ -48,7 +49,9 @@ _cc_recipients = { } -def get_dir(workdate: datetime.date, archived=True) -> pathlib.Path: +def get_dir( + workdate: datetime.date = datetime.date.today(), archived=True +) -> pathlib.Path: p = DAILY_DIR / str(workdate) / "Reports" if not p.exists() and archived: p = ( diff --git a/python/report_ops/sma.py b/python/report_ops/sma.py index 0d7fea61..24e01a76 100644 --- a/python/report_ops/sma.py +++ b/python/report_ops/sma.py @@ -4,7 +4,7 @@ from serenitas.utils.db import dbconn from serenitas.utils.exchange import ExchangeMessage from serenitas.utils.misc import rename_keys from serenitas.ops.trade_dataclasses import Deal -from .misc import _sma_recipients, _cc_recipients +from .misc import _sma_recipients, _cc_recipients, get_dir from exchangelib import FileAttachment import pandas as pd from io import StringIO @@ -15,6 +15,15 @@ import csv from serenitas.utils.env import DAILY_DIR +def build_position_file(cob, fund, asset_classes: list): + for asset_class in asset_classes: + for position in PositionReport[asset_class].gen_positions(cob, fund): + PositionReport.staging_queue.append(position.serialize("position")) + buf, dest = PositionReport.build_buffer(cob, fund) + PositionReport.staging_queue.clear() + return buf, dest + + @dataclass class SMA: date: datetime.date @@ -104,11 +113,7 @@ def get_path(cob, fund): filepath_pattern = "Innocap_{fund}_positions_{cob:%Y%m%d}.csv" case _: filepath_pattern = "{fund}_positions_{cob:%Y%m%d}.csv" - return ( - DAILY_DIR - / str(datetime.date.today()) - / filepath_pattern.format(fund=fund, cob=cob) - ) + return get_dir() / filepath_pattern.format(fund=fund, cob=cob) @dataclass @@ -157,6 +162,7 @@ class PositionReport(Deal, deal_type=None, table_name=None): def __init_subclass__(cls, asset_class, **kwargs): cls.asset_class = asset_class cls._query = _sql_query[asset_class] + cls._registry[asset_class] = cls @classmethod def gen_positions(cls, cob, fund): @@ -167,7 +173,7 @@ class PositionReport(Deal, deal_type=None, table_name=None): yield cls.from_query(row._asdict(), cob, fund) @classmethod - def build_buffer(cls, cob, fund, upload=False): + def build_buffer(cls, cob, fund): buf = StringIO() csvwriter = csv.writer(buf) csvwriter.writerow(POSITION_HEADERS) |
