Commit b6a28286 authored by Arnaud Fontaine's avatar Arnaud Fontaine

ZODB Components: Avoid masking exceptions as much as possible when loading a Component.

parent a6699b9e
......@@ -193,13 +193,23 @@ def generatePortalTypeClass(site, portal_type_name):
type_class_namespace = document_class_registry.get(type_class, '')
if not (type_class_namespace.startswith('Products.ERP5Type') or
portal_type_name in core_portal_type_class_dict):
import erp5.component.document
module_fullname = 'erp5.component.document.' + type_class
module_loader = erp5.component.document.find_module(module_fullname)
if module_loader is not None:
try:
klass = getattr(__import__('erp5.component.document.' + type_class,
fromlist=['erp5.component.document'],
level=0),
type_class)
except (ImportError, AttributeError):
pass
module = module_loader.load_module(module_fullname)
except ImportError, e:
LOG("ERP5Type.dynamic", WARNING,
"Could not load Component module '%s': %s" % (module_fullname, e))
else:
try:
klass = getattr(module, type_class)
except AttributeError:
LOG("ERP5Type.dynamic", WARNING,
"Could not get class '%s' in Component module '%s'" % \
(type_class,
module_fullname))
if klass is None:
type_class_path = document_class_registry.get(type_class)
......
......@@ -70,12 +70,10 @@ if 1:
from kw.
"""
try:
f = getattr(__import__('erp5.component.extension.' + self._module,
component_module = __import__('erp5.component.extension.' + self._module,
fromlist=['erp5.component.extension'],
level=0),
self._function)
except (ImportError, AttributeError):
level=0)
except ImportError:
import Globals # for data
filePath = self.filepath()
......@@ -93,6 +91,9 @@ if 1:
self.reloadIfChanged()
f = None
else:
f = getattr(component_module, self._function)
_v_f = getattr(self, '_v_f', None)
if not _v_f or (f and f is not _v_f):
f = self.getFunction(f=f)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment