From eb2aae3e732b2a9b24f8cd926ef1ed3743dbb5c5 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Thu, 14 Mar 2013 09:27:16 +0100 Subject: [PATCH] make exposure of metadata explicit rather than automatic - not all views require a login, nor the metadata in fact --- engine/manifoldapi.py | 3 --- engine/page.py | 22 +++++++++++++--------- engine/static/js/plugin.js | 12 ++++-------- plugins/quickfilter.py | 2 +- plugins/static/js/quickfilter.js | 2 +- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/engine/manifoldapi.py b/engine/manifoldapi.py index 1001f1b9..40f3e0c0 100644 --- a/engine/manifoldapi.py +++ b/engine/manifoldapi.py @@ -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 = [] diff --git a/engine/page.py b/engine/page.py index dfbb5a95..57e52268 100644 --- a/engine/page.py +++ b/engine/page.py @@ -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() diff --git a/engine/static/js/plugin.js b/engine/static/js/plugin.js index 709421ed..76683d1d 100644 --- a/engine/static/js/plugin.js +++ b/engine/static/js/plugin.js @@ -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][] } diff --git a/plugins/quickfilter.py b/plugins/quickfilter.py index 77929d7f..b7777e42 100644 --- a/plugins/quickfilter.py +++ b/plugins/quickfilter.py @@ -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 " diff --git a/plugins/static/js/quickfilter.js b/plugins/static/js/quickfilter.js index b14efe1f..7402b7b7 100644 --- a/plugins/static/js/quickfilter.js +++ b/plugins/static/js/quickfilter.js @@ -152,7 +152,7 @@ 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(); -- 2.43.0