decorators: split authenticated_json_view into POST and non-POST versions.

(imported from commit cdcfdb51c379c07e94ebc763cf925e6a73747fc0)
This commit is contained in:
Jessica McKellar
2012-12-02 14:51:51 -05:00
parent 6a316daee8
commit 1dbb2c6ed5
2 changed files with 31 additions and 20 deletions

View File

@@ -67,22 +67,33 @@ def authenticated_api_view(view_func):
return view_func(request, user_profile, *args, **kwargs)
return _wrapped_view_func
def authenticate_log_and_execute_json(request, client, view_func, *args, **kwargs):
if not request.user.is_authenticated():
return json_error("Not logged in", status=401)
request._client = client
user_profile = request.user.userprofile
update_user_activity(request, user_profile, client)
return view_func(request, user_profile, *args, **kwargs)
# Checks if the request is a POST request and that the user is logged
# in. If not, return an error (the @login_required behavior of
# redirecting to a login page doesn't make sense for json views)
def authenticated_json_view(view_func):
def authenticated_json_post_view(view_func):
@require_post
@has_request_variables
@wraps(view_func)
def _wrapped_view_func(request,
client=POST(default=get_client("website"), converter=get_client),
*args, **kwargs):
if not request.user.is_authenticated():
return json_error("Not logged in", status=401)
request._client = client
user_profile = request.user.userprofile
update_user_activity(request, user_profile, client)
return view_func(request, user_profile, *args, **kwargs)
return authenticate_log_and_execute_json(request, client, view_func, *args, **kwargs)
return _wrapped_view_func
def authenticated_json_view(view_func):
@wraps(view_func)
def _wrapped_view_func(request,
client=get_client("website"),
*args, **kwargs):
return authenticate_log_and_execute_json(request, client, view_func, *args, **kwargs)
return _wrapped_view_func
# These views are used by the main Django server to notify the Tornado server