vkk.workhours.manager.mixins
This submodule contains a collection of mixin classes.
1""" 2This submodule contains a collection of mixin classes. 3""" 4 5from django.contrib.auth.mixins import AccessMixin 6from django.utils import timezone 7from ..models import Project, ProjectManager 8 9 10class ManagerRequiredMixin(AccessMixin): 11 """ 12 A mixin for verifying whether the current user is a manager of the given project. 13 """ 14 check_field = None 15 16 def dispatch(self, request, *args, **kwargs): 17 """ 18 Overrides the `dispatch()` method of a class based view. If a user is not 19 a manager of the given project, they are redirected. 20 """ 21 project = Project.objects.filter( 22 invoice_number=kwargs.get('invoice_number') 23 ) 24 manager = ProjectManager.objects.filter( 25 manager=request.user, 26 project=project[0] 27 ) 28 if (not request.user.is_authenticated or 29 not project.exists() or 30 not manager.exists() or 31 manager[0].end < timezone.now().date() 32 ): 33 return self.handle_no_permission() 34 if (self.check_field is not None and 35 not self.model.objects.filter( 36 **{(self.check_field + '__invoice_number'): kwargs.get('invoice_number')} 37 ).exists()): 38 return self.handle_no_permission() 39 return super().dispatch(request, *args, **kwargs)
class
ManagerRequiredMixin(django.contrib.auth.mixins.AccessMixin):
11class ManagerRequiredMixin(AccessMixin): 12 """ 13 A mixin for verifying whether the current user is a manager of the given project. 14 """ 15 check_field = None 16 17 def dispatch(self, request, *args, **kwargs): 18 """ 19 Overrides the `dispatch()` method of a class based view. If a user is not 20 a manager of the given project, they are redirected. 21 """ 22 project = Project.objects.filter( 23 invoice_number=kwargs.get('invoice_number') 24 ) 25 manager = ProjectManager.objects.filter( 26 manager=request.user, 27 project=project[0] 28 ) 29 if (not request.user.is_authenticated or 30 not project.exists() or 31 not manager.exists() or 32 manager[0].end < timezone.now().date() 33 ): 34 return self.handle_no_permission() 35 if (self.check_field is not None and 36 not self.model.objects.filter( 37 **{(self.check_field + '__invoice_number'): kwargs.get('invoice_number')} 38 ).exists()): 39 return self.handle_no_permission() 40 return super().dispatch(request, *args, **kwargs)
A mixin for verifying whether the current user is a manager of the given project.
def
dispatch(self, request, *args, **kwargs):
17 def dispatch(self, request, *args, **kwargs): 18 """ 19 Overrides the `dispatch()` method of a class based view. If a user is not 20 a manager of the given project, they are redirected. 21 """ 22 project = Project.objects.filter( 23 invoice_number=kwargs.get('invoice_number') 24 ) 25 manager = ProjectManager.objects.filter( 26 manager=request.user, 27 project=project[0] 28 ) 29 if (not request.user.is_authenticated or 30 not project.exists() or 31 not manager.exists() or 32 manager[0].end < timezone.now().date() 33 ): 34 return self.handle_no_permission() 35 if (self.check_field is not None and 36 not self.model.objects.filter( 37 **{(self.check_field + '__invoice_number'): kwargs.get('invoice_number')} 38 ).exists()): 39 return self.handle_no_permission() 40 return super().dispatch(request, *args, **kwargs)
Overrides the dispatch()
method of a class based view. If a user is not
a manager of the given project, they are redirected.
Inherited Members
- django.contrib.auth.mixins.AccessMixin
- login_url
- permission_denied_message
- raise_exception
- redirect_field_name
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission