Source code for uaccounts.decorators

from django.contrib.auth.decorators import user_passes_test
from django.core.urlresolvers import reverse_lazy
from django.utils.decorators import available_attrs
from django.shortcuts import redirect, render

from functools import wraps


[docs]def personal(view): """Ensure user is logged in and active.""" def test(user): return user.is_authenticated() and user.is_active decorator = user_passes_test(test, reverse_lazy('uaccounts:login'), 'n') return decorator(view)
[docs]def pending(view): """Ensure user is logged in and pending.""" def test(user): return user.is_authenticated() and user.profile.pending decorator = user_passes_test(test, reverse_lazy('uaccounts:login'), None) return decorator(view)
[docs]def guest(view): """Ensure user is not logged in.""" @wraps(view, assigned=available_attrs(view)) def wrapped_view(request, *args, **kwargs): if request.user.is_authenticated(): if request.user.is_active: return redirect('uaccounts:index') return render(request, 'uaccounts/pending.html', {'user': request.user}) return view(request, *args, **kwargs) return wrapped_view