From e33056770783ccf9bf8cd867dde4ad4798f81641 Mon Sep 17 00:00:00 2001 From: Richard Mathot Date: Mon, 11 Dec 2017 11:34:46 +0100 Subject: [PATCH 1/3] [MOV] base,crm: make contact deduplication wizard available for all apps --- addons/crm/__manifest__.py | 2 -- addons/crm/wizard/__init__.py | 1 - odoo/addons/base/__manifest__.py | 1 + odoo/addons/base/wizard/__init__.py | 1 + {addons/crm => odoo/addons/base}/wizard/base_partner_merge.py | 0 .../addons/base}/wizard/base_partner_merge_views.xml | 0 6 files changed, 2 insertions(+), 3 deletions(-) rename {addons/crm => odoo/addons/base}/wizard/base_partner_merge.py (100%) rename {addons/crm => odoo/addons/base}/wizard/base_partner_merge_views.xml (100%) diff --git a/addons/crm/__manifest__.py b/addons/crm/__manifest__.py index 6f0d4a5182d..8e1a36c89ea 100644 --- a/addons/crm/__manifest__.py +++ b/addons/crm/__manifest__.py @@ -29,11 +29,9 @@ 'data/crm_lead_data.xml', 'data/mail_template_data.xml', - 'wizard/base_partner_merge_views.xml', 'wizard/crm_lead_lost_views.xml', 'wizard/crm_lead_to_opportunity_views.xml', 'wizard/crm_merge_opportunities_views.xml', - 'wizard/base_partner_merge_views.xml', 'views/crm_templates.xml', 'views/res_config_settings_views.xml', diff --git a/addons/crm/wizard/__init__.py b/addons/crm/wizard/__init__.py index 6a55568adb3..2d067e92595 100644 --- a/addons/crm/wizard/__init__.py +++ b/addons/crm/wizard/__init__.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import base_partner_merge from . import crm_lead_lost from . import crm_partner_binding from . import crm_lead_to_opportunity diff --git a/odoo/addons/base/__manifest__.py b/odoo/addons/base/__manifest__.py index 05dd0ed6e9d..6a4efca78b8 100644 --- a/odoo/addons/base/__manifest__.py +++ b/odoo/addons/base/__manifest__.py @@ -55,6 +55,7 @@ The kernel of Odoo, needed for all installation. 'wizard/base_module_uninstall_views.xml', 'wizard/base_export_language_views.xml', 'wizard/base_update_translations_views.xml', + 'wizard/base_partner_merge_views.xml', 'data/ir_actions_data.xml', 'views/res_company_views.xml', 'views/res_lang_views.xml', diff --git a/odoo/addons/base/wizard/__init__.py b/odoo/addons/base/wizard/__init__.py index ece1521da87..2eedfd6bba5 100644 --- a/odoo/addons/base/wizard/__init__.py +++ b/odoo/addons/base/wizard/__init__.py @@ -8,3 +8,4 @@ from . import base_module_upgrade from . import base_module_uninstall from . import base_export_language from . import base_update_translations +from . import base_partner_merge diff --git a/addons/crm/wizard/base_partner_merge.py b/odoo/addons/base/wizard/base_partner_merge.py similarity index 100% rename from addons/crm/wizard/base_partner_merge.py rename to odoo/addons/base/wizard/base_partner_merge.py diff --git a/addons/crm/wizard/base_partner_merge_views.xml b/odoo/addons/base/wizard/base_partner_merge_views.xml similarity index 100% rename from addons/crm/wizard/base_partner_merge_views.xml rename to odoo/addons/base/wizard/base_partner_merge_views.xml From eb619253447767bdd01227537fb86a6ea878c217 Mon Sep 17 00:00:00 2001 From: Richard Mathot Date: Mon, 11 Dec 2017 11:34:52 +0100 Subject: [PATCH 2/3] [FIX] base_partner_merge: this wizard does not depend on mail anymore We then extract the logging of the merge in a separate submethod, and log in chatters only when available. --- addons/mail/wizard/__init__.py | 1 + addons/mail/wizard/base_partner_merge.py | 13 +++++++++++++ odoo/addons/base/wizard/base_partner_merge.py | 7 +++++-- 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 addons/mail/wizard/base_partner_merge.py diff --git a/addons/mail/wizard/__init__.py b/addons/mail/wizard/__init__.py index 2523a3593b0..819ae4154f4 100644 --- a/addons/mail/wizard/__init__.py +++ b/addons/mail/wizard/__init__.py @@ -5,3 +5,4 @@ from . import invite from . import mail_compose_message from . import email_template_preview from . import base_module_uninstall +from . import base_partner_merge diff --git a/addons/mail/wizard/base_partner_merge.py b/addons/mail/wizard/base_partner_merge.py new file mode 100644 index 00000000000..d31749cacad --- /dev/null +++ b/addons/mail/wizard/base_partner_merge.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +from odoo import api, models, _ + + +class MergePartnerAutomatic(models.TransientModel): + + _inherit = 'base.partner.merge.automatic.wizard' + + @api.multi + def _log_merge_operation(self, src_partners, dst_partner): + super(MergePartnerAutomatic, self)._log_merge_operation(src_partners, dst_partner) + dst_partner.message_post(body='%s %s' % (_("Merged with the following partners:"), ", ".join('%s <%s> (ID %s)' % (p.name, p.email or 'n/a', p.id) for p in src_partners))) diff --git a/odoo/addons/base/wizard/base_partner_merge.py b/odoo/addons/base/wizard/base_partner_merge.py index e76d243fe11..32522c47e44 100644 --- a/odoo/addons/base/wizard/base_partner_merge.py +++ b/odoo/addons/base/wizard/base_partner_merge.py @@ -290,12 +290,15 @@ class MergePartnerAutomatic(models.TransientModel): self._update_reference_fields(src_partners, dst_partner) self._update_values(src_partners, dst_partner) - _logger.info('(uid = %s) merged the partners %r with %s', self._uid, src_partners.ids, dst_partner.id) - dst_partner.message_post(body='%s %s' % (_("Merged with the following partners:"), ", ".join('%s <%s> (ID %s)' % (p.name, p.email or 'n/a', p.id) for p in src_partners))) + self._log_merge_operation(src_partners, dst_partner) # delete source partner, since they are merged src_partners.unlink() + @api.multi + def _log_merge_operation(self, src_partners, dst_partner): + _logger.info('(uid = %s) merged the partners %r with %s', self._uid, src_partners.ids, dst_partner.id) + # ---------------------------------------- # Helpers # ---------------------------------------- From dcad7b37cdd05aac172f00350eee96477016a201 Mon Sep 17 00:00:00 2001 From: Richard Mathot Date: Mon, 11 Dec 2017 12:12:56 +0100 Subject: [PATCH 3/3] [FIX] base: make the test pass Since this test relies on the fact that no data exists yet, we are forced to unlink them... --- odoo/addons/base/tests/test_ir_actions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/odoo/addons/base/tests/test_ir_actions.py b/odoo/addons/base/tests/test_ir_actions.py index 60cbe64280a..7c5836fa97e 100644 --- a/odoo/addons/base/tests/test_ir_actions.py +++ b/odoo/addons/base/tests/test_ir_actions.py @@ -185,6 +185,7 @@ class TestActionBindings(common.TransactionCase): Actions = self.env['ir.actions.actions'] # first make sure there is no bound action + self.env.ref('base.action_partner_merge').unlink() bindings = Actions.get_bindings('res.partner') self.assertFalse(bindings['action']) self.assertFalse(bindings['report'])