aboutsummaryrefslogtreecommitdiffstats
path: root/python/report_ops/sma.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/report_ops/sma.py')
-rw-r--r--python/report_ops/sma.py20
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)