X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=engine%2Fmanifoldproxy.py;h=20e95929c39106ea14546556ed99beea98e4ab35;hb=3c0068714f095567f64ce29ece9cfeb05f91295b;hp=1d629c781bdd274579b9f83c6c5eb0da3e43d47c;hpb=da15d556eee34089124b7e24c9c503a8a0cb39e0;p=unfold.git diff --git a/engine/manifoldproxy.py b/engine/manifoldproxy.py index 1d629c78..20e95929 100644 --- a/engine/manifoldproxy.py +++ b/engine/manifoldproxy.py @@ -1,37 +1,47 @@ +import json +# this is for django objects only +#from django.core import serializers +from django.http import HttpResponse, HttpResponseForbidden + +from engine.manifoldquery import ManifoldQuery +from engine.manifoldapi import ManifoldAPI + # this view is what the javascript talks to when it sends a query # see also # myslice/urls.py # as well as # static/js/manifold-async.js - -import json -# this is for django objects only -#from django.core import serializers -from django.http import HttpResponse - -# xxx should probably cater for -# format_in : how is the query encoded in POST -# format_out: how to serve the results def api (request,format): + """the view associated with /manifold/api/ +with the query passed using POST""" + # expecting a POST if request.method != 'POST': print "manifoldproxy.api: unexpected method %s -- exiting"%request.method return # we only support json for now + # if needed in the future we should probably cater for + # format_in : how is the query encoded in POST + # format_out: how to serve the results if format != 'json': print "manifoldproxy.api: unexpected format %s -- exiting"%format return - - # xxx actually ask the backend here - hard_wired_answer = [ {'slice_hrn':'a.b.c'}, {'slice_hrn':'ple.inria.foo' } ] - answer=hard_wired_answer + # translate incoming POST request into a query object + manifold_query = ManifoldQuery() + manifold_query.fill_from_dict(request.POST) + # retrieve session for request + manifold_api_session_auth = request.session['manifold']['auth'] + # actually forward + manifold_api= ManifoldAPI(auth=manifold_api_session_auth) + answer=manifold_api.send_manifold_query (manifold_query) + # return json-encoded answer return HttpResponse (json.dumps(answer), mimetype="application/json") #################### -# to enable : see CSRF_FAILURE_VIEW in settings.py -# probably we want to elaborate this one a little in real life -# at least we can display the reason in the django output (although this turns out disappointing) +# see CSRF_FAILURE_VIEW in settings.py +# the purpose of redefining this was to display the failure reason somehow +# this however turns out disappointing/not very informative failure_answer=[ "csrf_failure" ] def csrf_failure(request, reason=""): print "CSRF failure with reason '%s'"%reason - return HttpResponseForbidden (json.dump (failure_answer), mimetype="application/json") + return HttpResponseForbidden (json.dumps (failure_answer), mimetype="application/json")