X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=engine%2Fmanifoldproxy.py;h=f75d430c2bbab036fbfe2836912de81a6895e726;hb=ff946fd2021dc5ed503b4d6169d2bb78769adbbd;hp=a66f187a2da680d2bb299cd5ba1c682e2619171a;hpb=171b1ca63f0b8ad399fbb063a018513b8e4ea03b;p=unfold.git diff --git a/engine/manifoldproxy.py b/engine/manifoldproxy.py index a66f187a..f75d430c 100644 --- a/engine/manifoldproxy.py +++ b/engine/manifoldproxy.py @@ -1,9 +1,3 @@ -# 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 @@ -12,31 +6,52 @@ from django.http import HttpResponse, HttpResponseForbidden from engine.manifoldquery import ManifoldQuery from engine.manifoldapi import ManifoldAPI -# xxx should probably cater for -# format_in : how is the query encoded in POST -# format_out: how to serve the results +# add artificial delay in s +debug_spin=0 +#debug_spin=1 + +# 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 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 - manifold_query = ManifoldQuery() - manifold_query.fill_from_dict(request.POST) - manifold_api_session_auth = request.session['manifold']['auth'] - manifold_api= ManifoldAPI(auth=manifold_api_session_auth) - # forward - answer=manifold_api.send_manifold_query (manifold_query) - return HttpResponse (json.dumps(answer), mimetype="application/json") + try: + # 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) + if debug_spin: + import time + time.sleep(debug_spin) + # return json-encoded answer + return HttpResponse (json.dumps(answer), mimetype="application/json") + except: + import traceback + traceback.print_exc() #################### -# 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