diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index 1557622fc804182a7dc71dfef1f334097dc98723..dab06775ce270ca546a5d1e1772135d969382d48 100644
--- a/product/ERP5Type/Base.py
+++ b/product/ERP5Type/Base.py
@@ -746,17 +746,11 @@ class Base( CopyContainer,
 
     # If this is a portal_type property and everything is already defined
     # for that portal_type, try to return a value ASAP
-    if ptype in Base.aq_portal_type:
-      accessor = getattr(Base.aq_portal_type[ptype], id, None)
-      if accessor is not None:
-        # Clearly this below has a bad effect in CMFCategory.
-        # Someone must investigate why. -yo
-        #return accessor.__of__(self) # XXX - JPS: I have no idea if we should __of__ before returning
-        return accessor
-      return None
-    elif id in ('portal_types', 'portal_url', 'portal_workflow'):
-      # This is required to precent infinite loop (we need to access portal_types tool)
-      return None
+    try:
+      return getattr(Base.aq_portal_type[ptype], id, None)
+    except KeyError:
+      if id.startswith('portal_'):
+        return None
 
     # Proceed with property generation
     klass = self.__class__