aboutsummaryrefslogtreecommitdiffstats
path: root/python/report_ops/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/report_ops/admin.py')
-rw-r--r--python/report_ops/admin.py33
1 files changed, 17 insertions, 16 deletions
diff --git a/python/report_ops/admin.py b/python/report_ops/admin.py
index 1f82afdb..cb2655cd 100644
--- a/python/report_ops/admin.py
+++ b/python/report_ops/admin.py
@@ -21,14 +21,15 @@ class CitcoReport:
fund: Fund = None
_conn: dbconn = dbconn("dawndb")
date_cols: ClassVar = []
+ file_prefix: ClassVar
dtkey_fun: ClassVar
_registry = {}
- def __init_subclass__(cls, table, fname, date_cols, dtkey):
+ def __init_subclass__(cls, table, file_prefix, date_cols, dtkey):
cls.table = table
- cls.fname = fname
+ cls.file_prefix = file_prefix
cls.date_cols = date_cols
- cls.dtkey_fun = partial(dt_from_citco, file_tag=cls.fname, dt_format=dtkey)
+ cls.dtkey_fun = partial(dt_from_citco, file_tag=file_prefix, dt_format=dtkey)
cls._registry[table] = cls
def __class_getitem__(cls, table):
@@ -38,31 +39,31 @@ class CitcoReport:
match self.fund:
case "ISOSEL":
self._sftp = SftpClient.from_creds("citco", folder="outgoing")
- self.report_name = self.get_latest_report()
+ if not self.report_file_name:
+ raise ValueError(f"No reports for {self.table} on {self.date}")
self.knowledge_date = datetime.datetime.combine(
- self.date, self.dtkey_fun(self.report_name).time()
+ self.date, self.dtkey_fun(self.report_file_name).time()
)
@property
- def report_date(self):
+ def sftp_report_date(self):
return self.date
- def get_latest_report(self):
- p = max(
+ @property
+ def report_file_name(self):
+ return max(
[
f
for f in self._sftp.client.listdir()
- if (self.fname in f) and (self.dtkey_fun(f).date() == self.report_date)
+ if (self.file_prefix in f)
+ and (self.dtkey_fun(f).date() == self.sftp_report_date)
],
key=self.dtkey_fun,
default=None,
)
- if not p:
- raise ValueError(f"No reports for {self.table} on {self.date}")
- return p
def to_df(self):
- with self._sftp.client.open(self.report_name) as fh:
+ with self._sftp.client.open(self.report_file_name) as fh:
df = pd.read_csv(fh, parse_dates=self.date_cols, infer_datetime_format=True)
df["row"] = df.index
df.columns = df.columns.str.lower()
@@ -87,7 +88,7 @@ class CitcoReport:
class AccruedReport(
CitcoReport,
table="isosel_accrued",
- fname="100502500_INNOCAP_ISOSEL_",
+ file_prefix="100502500_INNOCAP_ISOSEL_",
date_cols=[
"Init Date",
"Init Settle Date",
@@ -101,14 +102,14 @@ class AccruedReport(
dtkey="%Y%m%d%H%M%S",
):
@property
- def report_date(self):
+ def sftp_report_date(self):
return next_business_day(self.date)
class AllReport(
CitcoReport,
table="citco_reports",
- fname="SPOS4X_INNOCAP_ISOSEL_D_IM.",
+ file_prefix="SPOS4X_INNOCAP_ISOSEL_D_IM.",
date_cols=["Maturity Date"],
dtkey="%Y%m%d.%H%M%S",
):