Fixed JSON error when login (MetaData)
[myslice.git] / unfold / page.py
index f8f4eb3..d239888 100644 (file)
@@ -99,23 +99,38 @@ 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):
-        cached_metadata = SessionCache().get_metadata(self.request)
-        if cached_metadata and isinstance(cached_metadata, MetaData):
+        # 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 cached_metadata
+            return manifold['metadata']
+#             return cached_metadata
 
         metadata_auth = {'AuthMethod':'anonymous'}
 
-        metadata = MetaData (metadata_auth)
+        from myslice.settings import config
+        url = config.manifold_url()
+        metadata = MetaData(url, metadata_auth)
         metadata.fetch(self.request)
-        SessionCache().store_metadata(self.request, metadata)
+        # store it for next time
+        manifold['metadata']=metadata.to_json()
+#         SessionCache().store_metadata(self.request, metadata)
         logger.debug("Page.get_metadata: return new value")
-        return metadata
+        return metadata.to_json()
             
     def expose_js_metadata (self):
         # expose global MANIFOLD_METADATA as a js variable
         # xxx this is fetched synchroneously..
-        self.add_js_init_chunks("var MANIFOLD_METADATA =" + self.get_metadata().to_json() + ";\n")
+        self.add_js_init_chunks("var MANIFOLD_METADATA =" + self.get_metadata() + ";\n")
 
     def expose_js_var(self, name, value):
         # expose variable as a js value