decorators.py 931 B

123456789101112131415161718192021222324
  1. from django.contrib import messages
  2. from django.shortcuts import redirect
  3. from .models import UserKey
  4. def userkey_required():
  5. """
  6. Decorator for views which require that the user has an active UserKey (typically for encryption/decryption of
  7. Secrets).
  8. """
  9. def _decorator(view):
  10. def wrapped_view(request, *args, **kwargs):
  11. try:
  12. uk = UserKey.objects.get(user=request.user)
  13. except UserKey.DoesNotExist:
  14. messages.warning(request, "This operation requires an active user key, but you don't have one.")
  15. return redirect('users:userkey')
  16. if not uk.is_active():
  17. messages.warning(request, "This operation is not available. Your user key has not been activated.")
  18. return redirect('users:userkey')
  19. return view(request, *args, **kwargs)
  20. return wrapped_view
  21. return _decorator