Use Django's built-in @require_POST decorator

Theirs returns an actual 405

(imported from commit 31be790b0f53d7b63d7d3cd85972b16add3d8c74)
This commit is contained in:
Zev Benjamin
2012-11-19 18:10:37 -05:00
parent fac24df233
commit da2c079503
2 changed files with 4 additions and 8 deletions

View File

@@ -1,4 +1,5 @@
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
from zephyr.models import UserProfile, UserActivity, get_client from zephyr.models import UserProfile, UserActivity, get_client
from zephyr.lib.response import json_success, json_error from zephyr.lib.response import json_success, json_error
from django.utils.timezone import now from django.utils.timezone import now
@@ -30,13 +31,8 @@ def asynchronous(method):
wrapper.csrf_exempt = True wrapper.csrf_exempt = True
return wrapper return wrapper
def require_post(view_func): # I like the all-lowercase name better
@wraps(view_func) require_post = require_POST
def _wrapped_view_func(request, *args, **kwargs):
if request.method != "POST":
return json_error('This form can only be submitted by POST.')
return view_func(request, *args, **kwargs)
return _wrapped_view_func
def parse_client(request, default): def parse_client(request, default):
client_name = default client_name = default

View File

@@ -119,7 +119,7 @@ class PublicURLTest(TestCase):
# through Tornado. # through Tornado.
urls = {200: ["/accounts/home/", "/accounts/login/"], urls = {200: ["/accounts/home/", "/accounts/login/"],
302: ["/", "/accounts/logout/"], 302: ["/", "/accounts/logout/"],
400: ["/accounts/register/", 405: ["/accounts/register/",
"/api/v1/get_public_streams", "/api/v1/get_public_streams",
"/api/v1/subscriptions/list", "/api/v1/subscriptions/list",
"/api/v1/subscriptions/add", "/api/v1/subscriptions/add",