You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by jo...@apache.org on 2014/07/21 15:25:12 UTC

[36/50] git commit: Fix backend processing CORS handling

Fix backend processing CORS handling


Project: http://git-wip-us.apache.org/repos/asf/climate/repo
Commit: http://git-wip-us.apache.org/repos/asf/climate/commit/6a501206
Tree: http://git-wip-us.apache.org/repos/asf/climate/tree/6a501206
Diff: http://git-wip-us.apache.org/repos/asf/climate/diff/6a501206

Branch: refs/heads/master
Commit: 6a501206c24244110fb6d8b7796140fc88cb11f1
Parents: 32c322a
Author: Michael Joyce <jo...@apache.org>
Authored: Fri Jul 18 13:50:24 2014 -0700
Committer: Michael Joyce <jo...@apache.org>
Committed: Fri Jul 18 13:50:24 2014 -0700

----------------------------------------------------------------------
 ocw-ui/backend/processing.py | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/climate/blob/6a501206/ocw-ui/backend/processing.py
----------------------------------------------------------------------
diff --git a/ocw-ui/backend/processing.py b/ocw-ui/backend/processing.py
index 2b70713..e45b9c0 100644
--- a/ocw-ui/backend/processing.py
+++ b/ocw-ui/backend/processing.py
@@ -39,10 +39,24 @@ import numpy as np
 
 processing_app = Bottle()
 
-@processing_app.hook('after_request')
-def enable_cors():
-    ''' Allow Cross-Origin Resource Sharing for all URLs. '''
-    response.headers['Access-Control-Allow-Origin'] = '*'
+class EnableCors(object):
+    name = 'enable_cors'
+    api = 2
+
+    def apply(self, fn, context):
+        def _enable_cors(*args, **kwargs):
+            # set CORS headers
+            response.headers['Access-Control-Allow-Origin'] = '*'
+            response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS'
+            response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token'
+
+            if request.method != 'OPTIONS':
+                # actual request; reply with the actual response
+                return fn(*args, **kwargs)
+
+        return _enable_cors
+
+processing_app.install(EnableCors())
 
 @processing_app.route('/metrics/')
 def retrieve_metrics():
@@ -68,7 +82,7 @@ def retrieve_metrics():
         return '%s(%s)' % (request.query.callback, output)
     return output
 
-@processing_app.route('/run_evaluation/', method='POST')
+@processing_app.route('/run_evaluation/', method=['POST', 'OPTIONS'])
 def run_evaluation():
     ''' Run an OCW Evaluation.