Local updates for dev.myslice.info to work with api v2
authorJordan Augé <jordan.auge@lip6.fr>
Mon, 6 May 2013 11:52:52 +0000 (13:52 +0200)
committerJordan Augé <jordan.auge@lip6.fr>
Mon, 6 May 2013 11:52:52 +0000 (13:52 +0200)
manifold/manifoldapi.py
manifold/manifoldproxy.py
manifold/manifoldquery.py
manifold/metadata.py
myslice/config.py
myslice/settings.py

index 504e182..6037f98 100644 (file)
@@ -41,7 +41,7 @@ class ManifoldAPI:
                 ### attempt to cope with old APIs and new APIs
                 if isinstance (result, dict) and 'code' in result:
                     # this sounds like a result from a new API, leave it untouched
-                    pass
+                    return result # jordan
                 else:
                     if debug:
                         print '<=== backend call', methodName, args, kwds
@@ -69,18 +69,27 @@ class ManifoldAPI:
         return func
 
     def send_manifold_query (self, query):
-        (action,subject)= (query.action,query.subject)
-        # use e.g. self.Get rather than self.server.Get so we use the __getattr__ code
-        if action=='get':
-# this makes the backend to squeak and one can't login anymore...
-#            return self.Get(subject, query.filters, query.timestamp, query.fields)
-            return self.Get(subject, query.filters, {}, query.fields)
-        elif action=='update':
-            answer=self.Update(subject, query.filters, query.params, query.fields)
-            if not isinstance (answer, ManifoldResult): print "UNEXECPECTED answer", answer
-            return answer
-        else:
-            warning="WARNING: ManifoldAPI.send_manifold_query: %s not implemented for now"%action
-            print warning
-            print 3
-            return ManifoldResult(code=ManifoldCode.NOT_IMPLEMENTED, output=warning)
+        # We use a dictionary representation of the query for forwarding it to the API
+        ret = self.forward(query.to_dict())
+        print "="*80
+        print "Result:"
+        print ret
+        print "="*80
+        print ret
+        return ret
+
+#old#        (action,subject)= (query.action,query.subject)
+#old#        # use e.g. self.Get rather than self.server.Get so we use the __getattr__ code
+#old#        if action=='get':
+#old## this makes the backend to squeak and one can't login anymore...
+#old##            return self.Get(subject, query.filters, query.timestamp, query.fields)
+#old#            return self.Get(subject, query.filters, {}, query.fields)
+#old#        elif action=='update':
+#old#            answer=self.Update(subject, query.filters, query.params, query.fields)
+#old#            if not isinstance (answer, ManifoldResult): print "UNEXECPECTED answer", answer
+#old#            return answer
+#old#        else:
+#old#            warning="WARNING: ManifoldAPI.send_manifold_query: %s not implemented for now"%action
+#old#            print warning
+#old#            print 3
+#old#            return ManifoldResult(code=ManifoldCode.NOT_IMPLEMENTED, output=warning)
index 80e8066..29239b5 100644 (file)
@@ -73,11 +73,14 @@ with the query passed using POST"""
         manifold_api= ManifoldAPI(auth=manifold_api_session_auth)
         if debug: print 'manifoldproxy.proxy: sending to backend', manifold_query
         answer=manifold_api.send_manifold_query (manifold_query)
+        print "="*80
+        print "ANSWER IN PROXY", answer
+        print "="*80
         if debug: 
             print '<=== manifoldproxy.proxy: received from backend with code', answer['code']
             if answer['code']==0:
                 print ".... ctd ",
-                value=answer['value']
+                value=answer['result'] # was: value
                 if isinstance (value, list): print "result is a list with %d entries"%len(value)
                 elif isinstance (value, dict): print "result is a dict with keys %s"%value.keys()
                 else: print "result is other (type=%s) : %s"%(type(value),value)
index 91b6c0b..bbcc6b5 100644 (file)
@@ -160,3 +160,13 @@ class ManifoldQuery:
 
 
         self.analyzed_query = analyzed_query
+
+    def to_dict(self):
+        return {
+            'action': self.action,
+            'fact_table': self.subject,
+            'ts': self.timestamp,
+            'filters': self.filters,
+            'params': self.params,
+            'fields': self.fields
+        }
index 99af3d0..5f287ec 100644 (file)
@@ -32,7 +32,8 @@ class MetaData:
                   'column.resource_type', 'column.value_type',
                   'column.allowed_values', 'column.platforms.platform',
                   'column.platforms.platform_url']
-        rows_result = manifold_api.Get('metadata:table', [], [], fields)
+        rows_result = manifold_api.Get(fact_table='metadata:table', fields=fields)
+#old#        rows_result = manifold_api.Get('metadata:table', [], [], fields)
         rows = rows_result.ok_value()
         if not rows:
             print "Failed to retrieve metadata",rows_result.error()
index 026bfaf..593e88b 100644 (file)
@@ -3,7 +3,7 @@ class Config:
     # production should use https of course
 
 # an old-fashioned API - that's what is currently only supported   
-    manifold_url = "http://manifold.pl.sophia.inria.fr:7080/"
+    manifold_url = "http://localhost:7080/"
 # this one runs a new API, but currently (april 2013) there are missing
 # features; GetSession and GetPersons are still there (they should go away) and 
 # the code for retrieving metadata does not work as-is, and I have no clue 
index 0deec52..e5319f4 100644 (file)
@@ -7,9 +7,9 @@ TEMPLATE_DEBUG = DEBUG
 
 # change these if you use a different convention
 
-DEVELOPER_ROOT=os.path.expanduser("~/git/myslice-django")
+DEVELOPER_ROOT=os.path.expanduser("~/repos/myslice-django")
 
-PRODUCTION_ROOT="/usr/share/myslice"
+PRODUCTION_ROOT="/usr/share/myslice/USE_DEVELOPMENT"
 
 ####################
 ADMINS = (