X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=manifold%2Fmanifoldproxy.py;h=c444a37990c7ce30508746597fa3d63898c51462;hb=ec4be8cfef3ed6b3dc1742a95efd014da8f01893;hp=99057f48d8afce5cea76deb3fe8005dcd11ea1cd;hpb=ad6ebdd21b0be23a246af3817c886637491ee23f;p=myslice.git diff --git a/manifold/manifoldproxy.py b/manifold/manifoldproxy.py index 99057f48..c444a379 100644 --- a/manifold/manifoldproxy.py +++ b/manifold/manifoldproxy.py @@ -4,7 +4,7 @@ import json from django.http import HttpResponse, HttpResponseForbidden from manifold.manifoldquery import ManifoldQuery -from manifold.manifoldapi import ManifoldAPI +from manifold.manifoldapi import ManifoldAPI, SessionExpired debug=False debug=True @@ -13,6 +13,11 @@ debug=True debug_spin=0 #debug_spin=1 +# turn this on if you want the fastest possible (locally cached) feedback +# beware that this is very rough though... +work_offline=False +#work_offline=True + # this view is what the javascript talks to when it sends a query # see also # myslice/urls.py @@ -38,17 +43,43 @@ with the query passed using POST""" if debug: print 'manifoldproxy.proxy: request.POST',request.POST manifold_query = ManifoldQuery() manifold_query.fill_from_POST(request.POST) + offline_filename="offline-%s-%s.json"%(manifold_query.action,manifold_query.subject) # retrieve session for request manifold_api_session_auth = request.session['manifold']['auth'] + ### patch : return the latest one.. + if work_offline: + # if that won't work then we'll try to update anyways + try: + with (file(offline_filename,"r")) as f: + json_answer=f.read() + print "By-passing : using contents from %s"%offline_filename + return HttpResponse (json_answer, mimetype="application/json") + except: + import traceback + traceback.print_exc() + print "PROCEEDING" + pass + # actually forward 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) + # xxx we should embed the values inside a geni-like wrapper + try: + answer=manifold_api.send_manifold_query (manifold_query) + if debug: + try: print "received answer from backend with %d rows"%len(answer) + except: print "received answer from backend - can't say len" + except SessionExpired,error: + answer=[ error.message ] + json_answer=json.dumps(answer) + if (debug): + with (file(offline_filename,"w")) as f: + f.write(json_answer) if debug_spin: import time time.sleep(debug_spin) - # return json-encoded answer - return HttpResponse (json.dumps(answer), mimetype="application/json") + return HttpResponse (json_answer, mimetype="application/json") + except: import traceback traceback.print_exc()