Advertisement
lewapkon

mixins.py

Oct 31st, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.22 KB | None | 0 0
  1.  
  2. class LoginRequiredMixin(object):
  3.     @method_decorator(login_required)
  4.     def dispatch(self, request, *args, **kwargs):
  5.         return super().dispatch(request, *args, **kwargs)
  6.  
  7. class OnlySelectedUsersMixin(LoginRequiredMixin):
  8.     selectedUsers = tuple()
  9.  
  10.     def dispatch(self, request, *args, **kwargs):
  11.         if hasattr(request.user, 'person') and (request.user.person in self.selectedUsers or kwargs.get('permit')):
  12.             return super().dispatch(request, *args, **kwargs)
  13.         raise PermissionDenied
  14.  
  15. class OnlySelectedUsersOrSuperuserMixin(OnlySelectedUsersMixin):
  16.     def dispatch(self, request, *args, **kwargs):
  17.         try:
  18.             return super().dispatch(request, *args, **kwargs)
  19.         except PermissionDenied:
  20.             if request.user.is_superuser:
  21.                 return super().dispatch(request, *args, permit=True, **kwargs)
  22.             raise PermissionDenied
  23.  
  24. class OnlyNotSelectedUsersMixin(LoginRequiredMixin):
  25.     selectedUsers = tuple()
  26.  
  27.     def dispatch(self, request, *args, **kwargs):
  28.         if hasattr(request.user, 'person') and not request.user.person in self.selectedUsers:
  29.             return super().dispatch(request, *args, **kwargs)
  30.         raise PermissionDenied
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement