Retrieve metadata once per session
authorMohamed Larabi <mohamed.larabi@inria.fr>
Wed, 13 Mar 2013 10:12:11 +0000 (11:12 +0100)
committerMohamed Larabi <mohamed.larabi@inria.fr>
Wed, 13 Mar 2013 10:12:11 +0000 (11:12 +0100)
engine/page.py

index 7ec2727..850aa7c 100644 (file)
@@ -58,27 +58,32 @@ class Page:
 
 
     def load_metadata(self, request):
-        manifold_api_session_auth = request.session['manifold']['auth']
-        manifold_api = ManifoldAPI(auth=manifold_api_session_auth)
+        if 'metadata' not in request.session.keys(): 
+            manifold_api_session_auth = request.session['manifold']['auth']
+            manifold_api = ManifoldAPI(auth=manifold_api_session_auth)
         
-        fields = ['table', 'column.column',
+            fields = ['table', 'column.column',
                   'column.description','column.header', 'column.title',
                   'column.unit', 'column.info_type',
                   'column.resource_type', 'column.value_type',
                   'column.allowed_values', 'column.platforms.platform',
                   'column.platforms.platform_url']
 
-        results = manifold_api.Get('metadata:table', [], [], fields)
+            results = manifold_api.Get('metadata:table', [], [], fields)
 
-        for res in results:
-            method = res['table']
-            self._metadata[method] = res
+            for res in results:
+                 method = res['table']
+                 self._metadata[method] = res
+
+            request.session['metadata'] = self._metadata
+            self._metadata_javascript = "all_headers=" + json.dumps(self._metadata) + ";"
+            self.add_js_chunks(self._metadata_javascript)
+        else:
+            self._metadata = request.session['metadata']
 
-        request.session['metadata'] = self._metadata
         self._metadata_javascript = "all_headers=" + json.dumps(self._metadata) + ";"
         self.add_js_chunks(self._metadata_javascript)
 
-
     def metadata_get_fields(self, method):
         return self._metadata[method]['column'].sort()