2 # this is for django objects only
3 #from django.core import serializers
4 from django.http import HttpResponse, HttpResponseForbidden
6 from engine.manifoldquery import ManifoldQuery
7 from engine.manifoldapi import ManifoldAPI
9 # add artificial delay in s
13 # this view is what the javascript talks to when it sends a query
17 # static/js/manifold-async.js
18 def api (request,format):
19 """the view associated with /manifold/api/
20 with the query passed using POST"""
23 if request.method != 'POST':
24 print "manifoldproxy.api: unexpected method %s -- exiting"%request.method
26 # we only support json for now
27 # if needed in the future we should probably cater for
28 # format_in : how is the query encoded in POST
29 # format_out: how to serve the results
31 print "manifoldproxy.api: unexpected format %s -- exiting"%format
33 # translate incoming POST request into a query object
34 manifold_query = ManifoldQuery()
35 manifold_query.fill_from_dict(request.POST)
36 # retrieve session for request
37 manifold_api_session_auth = request.session['manifold']['auth']
39 manifold_api= ManifoldAPI(auth=manifold_api_session_auth)
40 answer=manifold_api.send_manifold_query (manifold_query)
43 time.sleep(debug_spin)
44 # return json-encoded answer
45 return HttpResponse (json.dumps(answer), mimetype="application/json")
48 # see CSRF_FAILURE_VIEW in settings.py
49 # the purpose of redefining this was to display the failure reason somehow
50 # this however turns out disappointing/not very informative
51 failure_answer=[ "csrf_failure" ]
52 def csrf_failure(request, reason=""):
53 print "CSRF failure with reason '%s'"%reason
54 return HttpResponseForbidden (json.dumps (failure_answer), mimetype="application/json")