manifoldapi now expects the URL as an argument to its constructor
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Mon, 25 Jan 2016 15:45:42 +0000 (16:45 +0100)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Mon, 25 Jan 2016 15:45:42 +0000 (16:45 +0100)
localauth/manifoldbackend.py
manifoldapi/manifoldapi.py
manifoldapi/manifoldproxy.py
manifoldapi/metadata.py
unfold/page.py

index 3e23515..8c8f0f3 100644 (file)
@@ -29,7 +29,7 @@ class ManifoldBackend:
             request = token['request']
 
             auth = {'AuthMethod': 'password', 'Username': email, 'AuthString': password}
-            api = ManifoldAPI(auth)
+            api = ManifoldAPI(config.manifold_url(), auth)
             sessions_result = api.forward(Query.create('local:session').to_dict())
             sessions = sessions_result.ok_value()
             if not sessions:
index 673970f..8f27d92 100644 (file)
@@ -22,19 +22,15 @@ except:
 
 class ManifoldAPI:
 
-    def __init__(self, auth=None, cainfo=None):
+    def __init__(self, url, auth=None, cainfo=None):
         
+        self.url = url
         self.auth = auth
         self.cainfo = cainfo
         self.errors = []
         self.trace = []
         self.calls = {}
         self.multicall = False
-        try:
-            from myslice.settings import config
-            self.url = config.manifold_url()
-        except:
-            self.url = "https://portal.onelab.eu:7080/"
         
         # Manifold uses a self signed certificate
         # https://www.python.org/dev/peps/pep-0476/
@@ -91,9 +87,9 @@ class ManifoldAPI:
 
         return func
 
-def _execute_query(request, query, manifold_api_session_auth):
+def _execute_query(url, request, query, manifold_api_session_auth):
     
-    manifold_api = ManifoldAPI(auth = manifold_api_session_auth)
+    manifold_api = ManifoldAPI(url, auth = manifold_api_session_auth)
     
     logger.debug("MANIFOLD -> QUERY : {}".format(" ".join(str(query).split())))
     result = manifold_api.forward(query.to_dict())
@@ -131,7 +127,9 @@ def execute_query(request, query):
     
     manifold_api_session_auth = request.session['manifold']['auth']
 
-    return _execute_query(request, query, manifold_api_session_auth)
+    from myslice.settings import config
+    url = config.manifold_url()
+    return _execute_query(url, request, query, manifold_api_session_auth)
 
 def execute_admin_query(request, query):
     # xxx config
@@ -140,4 +138,7 @@ def execute_admin_query(request, query):
         logger.error("""CONFIG: you need to setup admin_user and admin_password in myslice.ini
 Some functions won't work properly until you do so""")
     admin_auth = {'AuthMethod': 'password', 'Username': admin_user, 'AuthString': admin_password}
-    return _execute_query(request, query, admin_auth)
+
+    from myslice.settings import config
+    url = config.manifold_url()
+    return _execute_query(url, request, query, admin_auth)
index 0f700bf..5268f41 100644 (file)
@@ -31,7 +31,12 @@ debug_empty=False
 # myslice/urls.py
 # as well as 
 # static/js/manifold.js
-def proxy (request,format):
+def proxy(request, format):
+    from myslice.settings import config
+    url = config.manifold_url()
+    return _proxy(url, request, format)
+
+def _proxy(url, request, format):
     """the view associated with /manifold/proxy/ with the query passed using POST"""
     
     # expecting a POST
@@ -71,7 +76,7 @@ def proxy (request,format):
             return HttpResponse (json.dumps({'code':0,'value':[]}), content_type="application/json")
                 
         # actually forward
-        manifold_api= ManifoldAPI(auth=manifold_api_session_auth)
+        manifold_api= ManifoldAPI(url, auth=manifold_api_session_auth)
 
         # for the benefit of the python code, manifoldAPI raises an exception if something is wrong
         # however in this case we want to propagate the complete manifold result to the js world
index f8e9b34..3272241 100644 (file)
@@ -13,12 +13,13 @@ debug=False
 
 class MetaData:
 
-    def __init__ (self, auth):
+    def __init__ (self, url, auth):
+        self.url = url
         self.auth=auth
         self.hash_by_object={}
 
     def fetch (self, request):
-        manifold_api = ManifoldAPI(self.auth)
+        manifold_api = ManifoldAPI(self.url, self.auth)
         fields = ['table', 'column.name', 'column.qualifier', 'column.type', 
                   'column.is_array', 'column.description', 'column.default', 'key', 'capability']
         #fields = ['table', 'column.column',
index a9228ec..0ac131b 100644 (file)
@@ -117,7 +117,9 @@ class Page:
 
         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)
         # store it for next time
         manifold['metadata']=metadata