SessionCache is a cleaner and more robust mechanism for caching material attached...
[unfold.git] / unfold / page.py
index dbe5a7c..f8f4eb3 100644 (file)
@@ -9,7 +9,8 @@ from django.template.loader import render_to_string
 from manifoldapi.metadata import MetaData
 
 from unfold.prelude import Prelude
-
+from unfold.sessioncache import SessionCache
+    
 from myslice.configengine import ConfigEngine
 from myslice.settings import logger
 
@@ -98,24 +99,16 @@ class Page:
     # needs to be called explicitly and only when metadata is actually required
     # in particular user needs to be logged
     def get_metadata (self):
-        # look in session's cache - we don't want to retrieve this for every request
-        session=self.request.session
-
-        if 'manifold' not in session:
-            session['manifold'] = {}
-        manifold = session['manifold']
-
-        # if cached, use it
-        if 'metadata' in manifold and isinstance(manifold['metadata'],MetaData):
+        cached_metadata = SessionCache().get_metadata(self.request)
+        if cached_metadata and isinstance(cached_metadata, MetaData):
             logger.debug("Page.get_metadata: return cached value")
-            return manifold['metadata']
+            return cached_metadata
 
         metadata_auth = {'AuthMethod':'anonymous'}
 
-        metadata=MetaData (metadata_auth)
+        metadata = MetaData (metadata_auth)
         metadata.fetch(self.request)
-        # store it for next time
-        manifold['metadata']=metadata
+        SessionCache().store_metadata(self.request, metadata)
         logger.debug("Page.get_metadata: return new value")
         return metadata