diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/report_ops/utils.py | 31 |
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 |
