1 # this view is what the javascript talks to when it sends a query
5 # static/js/manifold-async.js
8 # this is for django objects only
9 #from django.core import serializers
10 from django.http import HttpResponse, HttpResponseForbidden
12 from engine.manifoldquery import ManifoldQuery
13 from engine.manifoldapi import ManifoldAPI
15 # xxx should probably cater for
16 # format_in : how is the query encoded in POST
17 # format_out: how to serve the results
18 def api (request,format):
20 if request.method != 'POST':
21 print "manifoldproxy.api: unexpected method %s -- exiting"%request.method
23 # we only support json for now
25 print "manifoldproxy.api: unexpected format %s -- exiting"%format
27 # xxx actually ask the backend here
28 manifold_query = ManifoldQuery()
29 manifold_query.fill_from_dict(request.POST)
30 manifold_api_session_auth = request.session['manifold']['auth']
31 manifold_api= ManifoldAPI(auth=manifold_api_session_auth)
33 answer=manifold_api.send_manifold_query (manifold_query)
34 return HttpResponse (json.dumps(answer), mimetype="application/json")
37 # to enable : see CSRF_FAILURE_VIEW in settings.py
38 # probably we want to elaborate this one a little in real life
39 # at least we can display the reason in the django output (although this turns out disappointing)
40 failure_answer=[ "csrf_failure" ]
41 def csrf_failure(request, reason=""):
42 print "CSRF failure with reason '%s'"%reason
43 return HttpResponseForbidden (json.dumps (failure_answer), mimetype="application/json")