aboutsummaryrefslogtreecommitdiffstats
path: root/python/report_ops/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/report_ops/utils.py')
-rw-r--r--python/report_ops/utils.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/python/report_ops/utils.py b/python/report_ops/utils.py
index b624b1f8..4a490881 100644
--- a/python/report_ops/utils.py
+++ b/python/report_ops/utils.py
@@ -195,23 +195,33 @@ CitcoSubmission._sql_insert = CitcoSubmission._sql_insert.replace(
@dataclass
-class Payment:
- settle_date: datetime.date
- currency: str
- amount: float
+class Monitor:
+ date: datetime.date
+ keys: ClassVar = ()
+ header: ClassVar[str] = None
+ line_format: ClassVar[str] = None
_insert_queue: ClassVar[list] = []
+ def __init_subclass__(cls, keys, header, line_format):
+ cls.keys = keys
+ cls.header = header
+ cls.line_format = line_format
+
@classmethod
- def stage_payment(cls, settlements):
- for row in settlements:
- cls._insert_queue.append(
- cls(row.settle_date, row.currency, row.payment_amount)
- )
+ def stage(cls, d: dict):
+ line = tuple(d[key] for key in cls.keys)
+ cls.append(line)
def to_email_format(self):
return f"\t* {self.settle_date}: {self.amount:,.2f} {self.currency}"
+class GFSMonitor(
+ Monitor, keys=(date, currency, amount), line_format="{0}: {2:,.2f} {1}"
+):
+ pass
+
+
class PaymentSettlement(Payment):
@classmethod
def email_innocap(cls, date, account_balance):
@@ -286,3 +296,6 @@ class EmailOps:
f"Please provide cash balance for Scotia for {date} in Blotter.\n\nThanks!",
to_recipients=_recipients["NYOPS"],
)
+
+
+ls