From c89948793ef5df4f3d6d673ecbe80095aa9c0091 Mon Sep 17 00:00:00 2001
From: Yoshinori Okuji <yo@nexedi.com>
Date: Tue, 13 Dec 2005 13:37:17 +0000
Subject: [PATCH] Cache getPortalObject when enabled.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4627 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/Base.py | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index c501da43a8..83788da2fc 100755
--- a/product/ERP5Type/Base.py
+++ b/product/ERP5Type/Base.py
@@ -48,7 +48,7 @@ from Products.ERP5Type.Utils2 import _getListFor
 from Products.ERP5Type.Accessor.TypeDefinition import list_types
 from Products.ERP5Type.Accessor import Base as BaseAccessor
 from Products.ERP5Type.XMLExportImport import Base_asXML
-from Products.ERP5Type.Cache import CachingMethod, clearCache
+from Products.ERP5Type.Cache import CachingMethod, clearCache, getTransactionCache
 from Products.CMFCore.WorkflowCore import ObjectDeleted
 from Accessor import WorkflowState
 
@@ -1153,7 +1153,20 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
     """
       Returns the portal object
     """
-    return self.portal_url.getPortalObject()
+    cache = getTransactionCache(self)
+    if cache is not None:
+      key = 'getPortalObject'
+      try:
+        return cache[key]
+      except KeyError:
+        pass
+        
+    result = self.portal_url.getPortalObject()
+    
+    if cache is not None:
+      cache[key] = result
+      
+    return result
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getWorkflowIds')
   def getWorkflowIds(self):
-- 
2.30.9