aboutsummaryrefslogtreecommitdiffstats
path: root/python/citco_ops/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/citco_ops/utils.py')
-rw-r--r--python/citco_ops/utils.py46
1 files changed, 26 insertions, 20 deletions
diff --git a/python/citco_ops/utils.py b/python/citco_ops/utils.py
index d139810e..1ac36aae 100644
--- a/python/citco_ops/utils.py
+++ b/python/citco_ops/utils.py
@@ -124,26 +124,26 @@ class CitcoSubmission(Deal, deal_type=None, table_name="citco_submission2"):
if not cls._insert_queue:
return
with cls._conn.cursor() as c:
- try:
- c.executemany(cls._sql_insert, cls._insert_queue)
- except UniqueViolation as e:
- logger.warning(e)
- cls._conn.rollback()
- else:
- cls._conn.commit()
- cls.update_citco_tables()
- em = ExchangeMessage()
- em.send_email(
- "(CITCO) UPLOAD REPORT",
- cls._format(),
- (
- "fyu@lmcg.com",
- "ghorel@lmcg.com",
- "etsui@lmcg.com",
- ),
- )
- finally:
- cls._insert_queue.clear()
+ c.executemany(cls._sql_insert, cls._insert_queue, returning=True)
+ newvals = []
+ while True:
+ if val := c.fetchone():
+ newvals.append(val)
+ if not c.nextset():
+ break
+ cls._conn.commit()
+ cls._insert_queue = newvals
+ cls.update_citco_tables()
+ em = ExchangeMessage()
+ em.send_email(
+ "(CITCO) UPLOAD REPORT",
+ cls._format(),
+ (
+ "fyu@lmcg.com",
+ "ghorel@lmcg.com",
+ "etsui@lmcg.com",
+ ),
+ )
@classmethod
def _format(cls):
@@ -188,6 +188,12 @@ class CitcoSubmission(Deal, deal_type=None, table_name="citco_submission2"):
)
+CitcoSubmission._sql_insert = CitcoSubmission._sql_insert.replace(
+ "RETURNING *",
+ "ON CONFLICT (identifier_type, submit_date, process_date, citco_id) DO NOTHING RETURNING *",
+)
+
+
_recipients = {
"ISOSEL": (
"luke.treacy@innocap.com",