From 74b3a7675c43e2884b396cd9d5febfebc6e9ff97 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jordan=20Aug=C3=A9?= Date: Mon, 6 May 2013 13:52:52 +0200 Subject: [PATCH] Local updates for dev.myslice.info to work with api v2 --- manifold/manifoldapi.py | 41 ++++++++++++++++++++++++--------------- manifold/manifoldproxy.py | 5 ++++- manifold/manifoldquery.py | 10 ++++++++++ manifold/metadata.py | 3 ++- myslice/config.py | 2 +- myslice/settings.py | 4 ++-- 6 files changed, 44 insertions(+), 21 deletions(-) diff --git a/manifold/manifoldapi.py b/manifold/manifoldapi.py index 504e1829..6037f98b 100644 --- a/manifold/manifoldapi.py +++ b/manifold/manifoldapi.py @@ -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) diff --git a/manifold/manifoldproxy.py b/manifold/manifoldproxy.py index 80e8066a..29239b5d 100644 --- a/manifold/manifoldproxy.py +++ b/manifold/manifoldproxy.py @@ -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) diff --git a/manifold/manifoldquery.py b/manifold/manifoldquery.py index 91b6c0b9..bbcc6b5d 100644 --- a/manifold/manifoldquery.py +++ b/manifold/manifoldquery.py @@ -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 + } diff --git a/manifold/metadata.py b/manifold/metadata.py index 99af3d01..5f287ec9 100644 --- a/manifold/metadata.py +++ b/manifold/metadata.py @@ -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() diff --git a/myslice/config.py b/myslice/config.py index 026bfaf3..593e88bd 100644 --- a/myslice/config.py +++ b/myslice/config.py @@ -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 diff --git a/myslice/settings.py b/myslice/settings.py index 0deec523..e5319f47 100644 --- a/myslice/settings.py +++ b/myslice/settings.py @@ -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 = ( -- 2.43.0