from django.contrib import messages from django.shortcuts import redirect from .models import UserKey def userkey_required(): """ Decorator for views which require that the user has an active UserKey (typically for encryption/decryption of Secrets). """ def _decorator(view): def wrapped_view(request, *args, **kwargs): try: uk = UserKey.objects.get(user=request.user) except UserKey.DoesNotExist: messages.warning(request, u"This operation requires an active user key, but you don't have one.") return redirect('users:userkey') if not uk.is_active(): messages.warning(request, u"This operation is not available. Your user key has not been activated.") return redirect('users:userkey') return view(request, *args, **kwargs) return wrapped_view return _decorator