def requires_post(redirect='alertprofiles-overview', required_args=None):
"""Decorates a view function to require a POST request.
If the view function was not reached via a POST request, a session
error message is generated, and the client is redirected to the
specified redirect view.
"""
def _required_args_are_present(request):
if required_args is not None:
for arg in required_args:
if not request.POST.get(arg):
return False
return True
def _decorator(func):
def _handler(request, *args, **kwargs):
error = None
if request.method == 'POST':
if _required_args_are_present(request):
return func(request, *args, **kwargs)
else:
error = _('Required post-data were not supplied')
else:
error = _('There was no post-data')
new_message(request, error, Messages.ERROR)
return HttpResponseRedirect(reverse(redirect))
return wraps(func)(_handler)
return _decorator
评论列表
文章目录