import json from api import DatumType, Datum, PortfoliosRisk from basic.dao import robo_base_datum as rbd from framework import component, parse_date @component class DefaultDatum(Datum): def get_fund_datums(self, crncy=None, risk=None, fund_ids=None): result = rbd.get_base_datums(type=DatumType.FUND, crncy=crncy, risk=risk, datum_ids=fund_ids) result = [{**json.loads(x['datas']), 'id': x['id']} for x in result] return [{**x, 'inceptDate': parse_date(x['inceptDate'])} for x in result] def get_index_datums(self, ticker=None, index_ids=None): result = rbd.get_base_datums(type=DatumType.INDEX, ticker=ticker, datum_ids=index_ids) return [{**json.loads(x['datas']), 'id': x['id']} for x in result] def get_high_risk_datums(self, risk: PortfoliosRisk): risk3 = self.get_fund_datums(risk=3) if risk is PortfoliosRisk.FT3: return risk3 risk3 = [x for x in risk3 if x['assetType'] in ['STOCK', 'BALANCED', 'COMMODITY']] if risk is PortfoliosRisk.FT6: return risk3 + self.get_fund_datums(risk=4) if risk is PortfoliosRisk.FT9: return risk3 + self.get_fund_datums(risk=(4, 5)) return None