decorators.py 970 B

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