diff options
Diffstat (limited to 'python/report_ops/status.py')
| -rw-r--r-- | python/report_ops/status.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/python/report_ops/status.py b/python/report_ops/status.py index befaeff3..297a1633 100644 --- a/python/report_ops/status.py +++ b/python/report_ops/status.py @@ -5,10 +5,13 @@ import re import xml.etree.ElementTree as ET from io import BytesIO from functools import lru_cache +from psycopg.errors import UniqueViolation from serenitas.ops.trade_dataclasses import Deal from serenitas.utils.remote import Client +from .utils import QuantifiMonitor + class Remote: _client: ClassVar @@ -63,7 +66,17 @@ class QuantifiRemote( "filename": fname.removesuffix(".xml"), "total": data["items"], } - return cls.from_dict(**data) + item = cls.from_dict(**data) + item.stage() + try: + item.commit() + except UniqueViolation: + item._conn.rollback() + else: + QuantifiMonitor.stage(data) + QuantifiMonitor.email(fname.removesuffix(".xml"), data["errors"] > 0) + finally: + item._insert_queue.clear() @staticmethod def extract_ts(filename): |
