X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=engine%2Fmanifoldproxy.py;h=a66f187a2da680d2bb299cd5ba1c682e2619171a;hb=171b1ca63f0b8ad399fbb063a018513b8e4ea03b;hp=0eac779778580372d66fecf8095757416900b2ff;hpb=2757273117a830a2ec078139acdfb996ed8aec78;p=unfold.git diff --git a/engine/manifoldproxy.py b/engine/manifoldproxy.py index 0eac7797..a66f187a 100644 --- a/engine/manifoldproxy.py +++ b/engine/manifoldproxy.py @@ -4,8 +4,13 @@ # as well as # static/js/manifold-async.js -from django.core import serializers -from django.http import HttpResponse +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 # xxx should probably cater for # format_in : how is the query encoded in POST @@ -19,8 +24,20 @@ def api (request,format): if format != 'json': print "manifoldproxy.api: unexpected format %s -- exiting"%format return - # xxx actually ask the backend here - hard_wired_answer = {'a':'some string','b':123} - return HttpResponse (serializers.serialize("json",hard_wired_answer), - mimetype="application/json") + 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") + +#################### +# 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) +failure_answer=[ "csrf_failure" ] +def csrf_failure(request, reason=""): + print "CSRF failure with reason '%s'"%reason + return HttpResponseForbidden (json.dumps (failure_answer), mimetype="application/json")