From 2a184ae62c330024820bf4e27ba512e85e89ce7c Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Tue, 31 Mar 2020 10:02:37 +0000 Subject: [PATCH] [FIX] crm_iap_lead, crm_iap_lead_enrich: Uninstalling CRM Steps to reproduce the bug: - Let's consider an instance with crm_iap_lead and crm_iap_lead_enrich installed - Uninstall crm Bug: An error was raised: ('Record does not exist or has been deleted.\n(Record: ir.model.fields(15085,), User: 1)', None) because the field reveal_id is shared on model crm.lead and modules crm_iap_lead and crm_iap_lead_enrich are independent from each other. Inspired from https://github.com/odoo/odoo/commit/ff7efbb1e81cd6987601c03f0b75a37d2df8e331 opw:2224952 closes odoo/odoo#48813 X-original-commit: 80879be5d7ab863a097439df1cd61aa236edaca4 Signed-off-by: Simon Goffin (sig) --- addons/crm_iap_lead/models/__init__.py | 1 + addons/crm_iap_lead/models/ir_model_fields.py | 18 ++++++++++++++++++ addons/crm_iap_lead_enrich/models/__init__.py | 1 + .../models/ir_model_fields.py | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 addons/crm_iap_lead/models/ir_model_fields.py create mode 100644 addons/crm_iap_lead_enrich/models/ir_model_fields.py diff --git a/addons/crm_iap_lead/models/__init__.py b/addons/crm_iap_lead/models/__init__.py index d529ee24678..1ac91ddbc0c 100644 --- a/addons/crm_iap_lead/models/__init__.py +++ b/addons/crm_iap_lead/models/__init__.py @@ -4,3 +4,4 @@ from . import crm_lead from . import crm_iap_lead from . import crm_iap_lead_helpers from . import crm_iap_lead_mining_request +from . import ir_model_fields diff --git a/addons/crm_iap_lead/models/ir_model_fields.py b/addons/crm_iap_lead/models/ir_model_fields.py new file mode 100644 index 00000000000..06a7fb6eeb0 --- /dev/null +++ b/addons/crm_iap_lead/models/ir_model_fields.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details + +from odoo import models + + +class IrModelFields(models.Model): + _inherit = 'ir.model.fields' + + def unlink(self): + # Nasty hack to prevent the deletion of shared field reveal_id + self = self.filtered( + lambda rec: not ( + rec.model == 'crm.lead' + and rec.name == 'reveal_id' + ) + ) + return super(IrModelFields, self).unlink() diff --git a/addons/crm_iap_lead_enrich/models/__init__.py b/addons/crm_iap_lead_enrich/models/__init__.py index dcb5aa3d8a4..f1f911179a4 100644 --- a/addons/crm_iap_lead_enrich/models/__init__.py +++ b/addons/crm_iap_lead_enrich/models/__init__.py @@ -4,3 +4,4 @@ from . import crm_lead from . import iap_enrich_api from . import res_config_settings +from . import ir_model_fields diff --git a/addons/crm_iap_lead_enrich/models/ir_model_fields.py b/addons/crm_iap_lead_enrich/models/ir_model_fields.py new file mode 100644 index 00000000000..06a7fb6eeb0 --- /dev/null +++ b/addons/crm_iap_lead_enrich/models/ir_model_fields.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details + +from odoo import models + + +class IrModelFields(models.Model): + _inherit = 'ir.model.fields' + + def unlink(self): + # Nasty hack to prevent the deletion of shared field reveal_id + self = self.filtered( + lambda rec: not ( + rec.model == 'crm.lead' + and rec.name == 'reveal_id' + ) + ) + return super(IrModelFields, self).unlink()