[Erp5-report] r39425 yo - /erp5/trunk/products/ERP5Type/Dynamic/portaltypeclass.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Oct 21 10:44:27 CEST 2010
Author: yo
Date: Thu Oct 21 10:44:25 2010
New Revision: 39425
URL: http://svn.erp5.org?rev=39425&view=rev
Log:
Clean up and simplify the code.
Modified:
erp5/trunk/products/ERP5Type/Dynamic/portaltypeclass.py
Modified: erp5/trunk/products/ERP5Type/Dynamic/portaltypeclass.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Dynamic/portaltypeclass.py?rev=39425&r1=39424&r2=39425&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Dynamic/portaltypeclass.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Dynamic/portaltypeclass.py [utf8] Thu Oct 21 10:44:25 2010
@@ -102,7 +102,6 @@ def portalTypeFactory(portal_type_name):
"""
#LOG("ERP5Type.Dynamic", 0, "Loading portal type %s..." % portal_type_name)
- type_class = None
mixin_list = []
interface_list = []
accessor_holder_list = []
@@ -110,62 +109,37 @@ def portalTypeFactory(portal_type_name):
from Products.ERP5.ERP5Site import getSite
site = getSite()
- type_tool = site.portal_types
- if portal_type_name == "Base Type":
- type_class = "ERP5TypeInformation"
- elif portal_type_name == "Solver Type":
- type_class = "SolverTypeInformation"
- else:
- try:
- portal_type = getattr(type_tool, portal_type_name)
- except:
- raise AttributeError('portal type %s not found in Types Tool' \
- % portal_type_name)
-
- # type_class has a compatibility getter that should return
- # something even if the field is not set (i.e. Base Type object
- # was not migrated yet)
- try:
- type_class = portal_type.getTypeClass()
-
- # But no such getter exists for Mixins and Interfaces:
- # in reality, we can live with such a failure
- try:
- mixin_list = portal_type.getTypeMixinList()
- interface_list = portal_type.getTypeInterfaceList()
- except StandardError:
- # log loudly the error, but it's not _critical_
- LOG("ERP5Type.Dynamic", ERROR,
- "Could not load interfaces or Mixins for portal type %s" \
- % portal_type_name)
- except AttributeError:
- # Try to figure out a coresponding document class from the document side.
- # This is required for the bootstrap (e.g. Base Category).
- for name, path in document_class_registry.iteritems():
- # XXX heuristic: bootstrap issues should happen only inside ERP5Type.
- if not path.startswith('Products.ERP5Type.'):
- continue
-
- module_path, class_name = path.rsplit('.', 1)
- module = __import__(module_path, {}, {}, (module_path,))
- klass = getattr(module, class_name)
- try:
- try:
- document_portal_type = getattr(klass, 'portal_type')
- if document_portal_type == portal_type_name:
- type_class = name
- break
- except AttributeError:
- pass
- finally:
- del klass
+ types_tool = site.portal_types
+ try:
+ portal_type = getattr(types_tool, portal_type_name)
+ except AttributeError:
+ raise AttributeError('portal type %s not found in Types Tool' \
+ % portal_type_name)
+
+ # type_class has a compatibility getter that should return
+ # something even if the field is not set (i.e. Base Type object
+ # was not migrated yet)
+ type_class = portal_type.getTypeClass()
+
+ # But no such getter exists for Mixins and Interfaces:
+ # in reality, we can live with such a failure
+ try:
+ mixin_list = portal_type.getTypeMixinList()
+ interface_list = portal_type.getTypeInterfaceList()
+ except StandardError:
+ # log loudly the error, but it's not _critical_
+ LOG("ERP5Type.Dynamic", ERROR,
+ "Could not load interfaces or Mixins for portal type %s" \
+ % portal_type_name)
+ type_class_path = None
if type_class is not None:
- type_class = document_class_registry.get(type_class)
- if type_class is None:
- raise AttributeError('Document class is not defined on Portal Type %s' % portal_type_name)
+ type_class_path = document_class_registry.get(type_class)
+ if type_class_path is None:
+ raise AttributeError('Document class is not defined on Portal Type %s' \
+ % portal_type_name)
- type_class = _importClass(type_class)
+ klass = _importClass(type_class_path)
## Disabled because there will be no commit of
## type_zodb_property_sheet, only use for testing ATM
@@ -208,7 +182,7 @@ def portalTypeFactory(portal_type_name):
mixin_path_list = map(mixin_class_registry.__getitem__, mixin_list)
mixin_class_list = map(_importClass, mixin_path_list)
- baseclasses = [type_class] + accessor_holder_list + mixin_class_list
+ baseclasses = [klass] + accessor_holder_list + mixin_class_list
#LOG("ERP5Type.Dynamic", INFO,
# "Portal type %s loaded with bases %s" \
More information about the Erp5-report
mailing list