-# 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, HttpResponseForbidden
from engine.manifoldquery import ManifoldQuery
+from engine.manifoldapi import ManifoldAPI
+
+# add artificial delay in s
+debug_spin=0
+#debug_spin=1
-# xxx should probably cater for
-# format_in : how is the query encoded in POST
-# format_out: how to serve the results
+# 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
- # 4amine
- # manifold_query = ManifoldQuery()
- # manifold_query.fill_from_dict(request.POST)
- # locate the api and/or the auth
- # api=
- # forward
- # answer=api.send_manifold_query (manifold_query)
- 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)
+ if debug_spin:
+ import time
+ time.sleep(debug_spin)
+ # 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