diff options
Diffstat (limited to 'python/report_ops/sma.py')
| -rw-r--r-- | python/report_ops/sma.py | 20 |
1 files changed, 13 insertions, 7 deletions
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) |
