From 0057996c4208b88367cd9153a1b77797b7e6992c Mon Sep 17 00:00:00 2001 From: Tom Date: Thu, 18 May 2017 17:48:26 +0200 Subject: [PATCH] just delete the duplicated models, not the useful ones --- base_partner_merge/__init__.py | 3 +-- base_partner_merge/hooks.py | 16 +++++++++++----- base_partner_merge/models/__init__.py | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/base_partner_merge/__init__.py b/base_partner_merge/__init__.py index 1287bea19..4e0cc72a8 100644 --- a/base_partner_merge/__init__.py +++ b/base_partner_merge/__init__.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from . import base_partner_merge # NOQA -from .hooks import post_load_hook from . import models +from .hooks import post_load_hook diff --git a/base_partner_merge/hooks.py b/base_partner_merge/hooks.py index 487715229..7d2634871 100644 --- a/base_partner_merge/hooks.py +++ b/base_partner_merge/hooks.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # © 2017 Therp BV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import sys import inspect from openerp.models import MetaModel @@ -16,15 +17,20 @@ def post_load_hook(): if 'graph' in frame.f_locals: graph = frame.f_locals['graph'] package = frame.f_locals['package'] - package.data['data'].remove('views/base_partner_merge.xml') if any(p.name == 'crm' for p in graph): # so crm is installed, then we need to remove your model # from the list of models to be registered # TODO: this could be smarter and only ditch models that need # to be ditched (if crm is in their mro) - MetaModel.module_to_models['base_partner_merge'] = [] - # and in this case, we also don't want to load our xml files - else: - # if crm is not installed, we + our_version = 'openerp.addons.base_partner_merge.' \ + 'models.base_partner_merge' + classes_to_ditch = [_class for _name, _class in + inspect.getmembers(sys.modules[our_version], + lambda member: inspect.isclass(member) + and member.__module__ == our_version)] + for _class in classes_to_ditch: + MetaModel.module_to_models['base_partner_merge'] \ + .remove(_class) + # and in this case, we also don't want to load our xml file package.data['data'].remove('views/base_partner_merge.xml') break diff --git a/base_partner_merge/models/__init__.py b/base_partner_merge/models/__init__.py index 479ee606c..9d4eb7a8e 100644 --- a/base_partner_merge/models/__init__.py +++ b/base_partner_merge/models/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from . import base_partner_merge # noqa from . import res_partner from . import base_partner_merge_automatic_wizard