aboutsummaryrefslogtreecommitdiffstats
path: root/python/report_ops/status.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/report_ops/status.py')
-rw-r--r--python/report_ops/status.py15
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):