From 0f60459709aee6eec053eabb7916fbbbcf06b5a5 Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Mon, 18 Jun 2012 14:15:23 -0400 Subject: [PATCH] Add @expect_json to help with parsing JSON request --- common/djangoapps/util/json_request.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 common/djangoapps/util/json_request.py diff --git a/common/djangoapps/util/json_request.py b/common/djangoapps/util/json_request.py new file mode 100644 index 0000000000..4066cfc889 --- /dev/null +++ b/common/djangoapps/util/json_request.py @@ -0,0 +1,16 @@ +from functools import wraps +import copy +import json + +def expect_json(view_function): + @wraps(view_function) + def expect_json_with_cloned_request(request, *args, **kwargs): + if request.META['CONTENT_TYPE'] == "application/json": + cloned_request = copy.copy(request) + cloned_request.POST = cloned_request.POST.copy() + cloned_request.POST.update(json.loads(request.raw_post_data)) + return view_function(cloned_request, *args, **kwargs) + else: + return view_function(request, *args, **kwargs) + + return expect_json_with_cloned_request