human
I wrote the below code

    def decorator(view_fn):
        def _wrapped_view(request, *args, **kwargs):
            redirect = redirect_func(request.user)
            if (redirect and (not request.is_ajax())):
                redirect_url = (redirect_url_func() or reverse('users.login'))
                if redirect_field:
                    path = urlquote(request.get_full_path())
                    redirect_url = ('%s?%s=%s' % (redirect_url, redirect_field, path))
                return HttpResponseRedirect(redirect_url)
            elif ((redirect and request.is_ajax()) or (deny_func and deny_func(request.user))):
                return HttpResponseForbidden()
            return view_fn(request, *args, **kwargs)
        return wraps(view_fn, assigned=available_attrs(view_fn))(_wrapped_view)
    return decorator

What's a good function header?

=====
Here's a good function header?
assistant
#Here's a good function header.

def user_access_decorator(redirect_func, redirect_url_func, deny_func=None, redirect_field=REDIRECT_FIELD_NAME):