def activation_required(login='login', activation='activation'): """ Redirect user to: - login page if not authenticated - activation page if not activated examples: @activation_required('login-page', 'activation-page') def something(..): pass """ def decorator(func): def wrapper(request, *args, **kw): if not request.user.is_authenticated(): return HttpResponseRedirect(reverse(login)) elif not request.user.is_active: return HttpResponseRedirect(reverse(activation)) return func(request, *args, **kw) return wrapper return decorator