From 13f697b6ee1b011a371982c0c93738e996ecb035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernanda=20Hern=C3=A1ndez?= Date: Fri, 28 Oct 2022 17:21:38 +0000 Subject: [PATCH] [FIX] base: Partners with followers in common can be merged --- odoo/addons/base/wizard/base_partner_merge.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/odoo/addons/base/wizard/base_partner_merge.py b/odoo/addons/base/wizard/base_partner_merge.py index 75b43ad36734d..12da4af2983b1 100644 --- a/odoo/addons/base/wizard/base_partner_merge.py +++ b/odoo/addons/base/wizard/base_partner_merge.py @@ -172,9 +172,13 @@ def _update_foreign_keys(self, src_partners, dst_partner): except psycopg2.Error as e: # updating fails, most likely due to a violated unique constraint # keeping record with nonexistent partner_id is useless, better delete it - msg="""An error has ocurred meanwhile foreign keys were updated \n Destination Record: %s \nSource Record: %s, \nError: %s""" % (dst_partner.id, tuple(src_partners.ids), e) - _logger.error(msg) - raise UserError(msg) + if e.pgcode == psycopg2.errorcodes.UNIQUE_VIOLATION: + query = 'DELETE FROM "%(table)s" WHERE "%(column)s" IN %%s' % query_dic + self._cr.execute(query, (tuple(src_partners.ids),)) + else: + msg="""An error has ocurred meanwhile foreign keys were updated \n Destination Record: %s \nSource Record: %s, \nError: %s""" % (dst_partner.id, tuple(src_partners.ids), e) + _logger.error(msg) + raise UserError(msg) self.invalidate_cache() @@ -199,7 +203,7 @@ def update_records(model, src, field_model='model', field_id='res_id'): # updating fails, most likely due to a violated unique constraint # keeping record with nonexistent partner_id is useless, better delete it # An example of this is with partners that have followers in common: - if model == "mail.followers" and e.pgcode == psycopg2.errorcodes.UNIQUE_VIOLATION: + if e.pgcode == psycopg2.errorcodes.UNIQUE_VIOLATION: records.sudo().unlink() else: # Everything else is not expected and should fail.