diff options
Diffstat (limited to 'python/citco_ops')
| -rw-r--r-- | python/citco_ops/utils.py | 46 |
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", |
