make exposure of metadata explicit rather than automatic - not all views require...
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 14 Mar 2013 08:27:16 +0000 (09:27 +0100)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 14 Mar 2013 08:27:16 +0000 (09:27 +0100)
engine/manifoldapi.py
engine/page.py
engine/static/js/plugin.js
plugins/quickfilter.py
plugins/static/js/quickfilter.js

index 1001f1b..40f3e0c 100644 (file)
@@ -11,9 +11,6 @@ class ManifoldAPI:
 
     config = Config()
     self.auth = auth
-#    self.server = config.manifold_server
-#    self.port = config.manifold_port
-#    self.path = config.manifold_path
     self.cainfo = cainfo
     self.errors = []
     self.trace = []
index dfbb5a9..57e5226 100644 (file)
@@ -27,8 +27,8 @@ class Page:
         self.prelude=Prelude(css_files='css/plugin.css')
         # load metadata
         self._metadata={}
-        self._metadata_javascript='' 
-        self.expose_js_metadata()
+        # do not call this uncondionnally as we might not even have logged in
+        self.expose_js_metadata()
 
     # record known plugins hashed on their domid
     def record_plugin (self, plugin):
@@ -64,7 +64,15 @@ class Page:
 
     def expose_js_metadata(self):
         request=self.request
-        if 'metadata' not in request.session.keys(): 
+        # xxx this code should probably not be called unconditionnally at page creation time
+        # because we're not sure a user is logged in so we might have no session...
+        if 'manifold' not in request.session:
+            print "Page.expose_js_metadata: no 'manifold' in session... - skipping"
+            return
+        # use cached version if present
+        if 'metadata' in request.session.keys(): 
+            self._metadata = request.session['metadata']
+        else:
             manifold_api_session_auth = request.session['manifold']['auth']
             manifold_api = ManifoldAPI(auth=manifold_api_session_auth)
         
@@ -82,13 +90,9 @@ class Page:
                  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']
 
-        self._metadata_javascript = "all_headers=" + json.dumps(self._metadata) + ";"
-        self.add_js_chunks(self._metadata_javascript)
+        javascript = "all_headers=" + json.dumps(self._metadata) + ";"
+        self.add_js_chunks(javascript)
 
     def metadata_get_fields(self, method):
         return self._metadata[method]['column'].sort()
index 709421e..76683d1 100644 (file)
@@ -1,10 +1,10 @@
 function getMetadata(){
-    return all_headers;
+    return MANIFOLD_METADATA;
 }
 // returns all fields of a given method
 function getMetadata_fields(method){
     var result=new Array();
-    jQuery.each(all_headers, function(m,obj){
+    jQuery.each(MANIFOLD_METADATA, function(m,obj){
         if(m==method){
             jQuery.each(obj['column'], function(i,f){
                 result.push(f);
@@ -18,9 +18,8 @@ function getMetadata_fields(method){
 }
 // returns all properties of a given field
 function getMetadata_field(method, field){
-    //console.log(all_headers);
     var result=new Array();
-    jQuery.each(all_headers, function(m,obj){
+    jQuery.each(MANIFOLD_METADATA, function(m,obj){
         if(m==method){
             jQuery.each(obj['column'], function(i,f){
                 if(f['column']==field){
@@ -35,9 +34,8 @@ function getMetadata_field(method, field){
 }
 // returns the value of a property from a field within a method (type of object : resource,node,lease,slice...)
 function getMetadata_property(method, field, property){
-    //console.log(all_headers);
     var result=null;
-    jQuery.each(all_headers, function(m,obj){
+    jQuery.each(MANIFOLD_METADATA, function(m,obj){
         if(m==method){
             jQuery.each(obj['column'], function(i,f){
                 if(f['column']==field){
@@ -49,6 +47,4 @@ function getMetadata_property(method, field, property){
         }
     });
     return result;
-    //all_headers[method]['column']
-    //[field][]
 }
index 77929d7..b7777e4 100644 (file)
@@ -6,7 +6,7 @@ class QuickFilter (Plugin) :
         Plugin.__init__ (self, **settings)
         self.list=list
         self.with_datatables = with_datatables
-        
+        self.page.expose_js_metadata()
 
     def title (self) : return "Title for Quick "
 
index b14efe1..7402b7b 100644 (file)
                     console.log(filter[0]);
                     allowedValues=getMetadata_property('resource', filter[0], 'allowed_values');
                     if (allowedValues!='' && allowedValues!="N/A") {
-                    //if(all_headers[filter[0]]['allowed_values']!=''){
+                    //if(MANIFOLD_METADATA[filter[0]]['allowed_values']!=''){
                         jQuery('#QuickFilter_select_field').val("#");
                         jQuery('#QuickFilter_select_value').children().remove().end();
                         jQuery('#QuickFilter_select_value_container').hide();