vkk.workhours.allprojects.views
1from django.utils.translation import gettext_lazy as _ 2from django.views.generic import FormView, RedirectView 3from django.urls import reverse 4from django.db.models import Max 5from django.utils import timezone 6from vkk.generic.views import CustomListView, CustomSuccessView 7from vkk.users.models import User 8from vkk.workhours.models import Period 9from .mixins import ProjectManagerRequiredMixin 10from .forms import AssigneeForm, YearSelectForm, AssgineeClosureForm 11 12 13class AllProjectYearRedirectView(ProjectManagerRequiredMixin, RedirectView): 14 def get_redirect_url(self, *args, **kwargs): 15 # Catches Period Selection from GET 16 if 'year' in self.request.GET: 17 form = YearSelectForm(data=self.request.GET) 18 if form.is_valid(): 19 year = int(form.cleaned_data['year']) 20 else: 21 year = Period.objects.aggregate(Max('start'))['start__max'].year 22 return reverse('vkk:workhours:allprojects:overview', kwargs={'year': year}) 23 24 25class AllProjectAssigneesOverView(ProjectManagerRequiredMixin, CustomListView): 26 model = User 27 fields = ['first_name', 'last_name', 'email'] 28 action_options = {'update': _('Details')} 29 ordering = ['last_name', 'first_name'] 30 template_name = 'vkk/workhours/allprojects/overview.html' 31 32 def get_context_data(self, **kwargs): 33 context = super().get_context_data(**kwargs) 34 context["form"] = YearSelectForm( 35 initial={'year': self.kwargs['year']} 36 ) 37 return context 38 39 def get_queryset(self): 40 query_set = super().get_queryset().filter( 41 projectassignment__project__projectmanager__manager=self.request.user, 42 projectassignment__project__projectmanager__end__gte=timezone.now().date(), 43 ).distinct() 44 return query_set 45 46 47class AssigneeUpdate(ProjectManagerRequiredMixin, FormView): 48 form_class = AssigneeForm 49 template_name = 'vkk/workhours/allprojects/assignee_update.html' 50 51 def get_form_kwargs(self): 52 kwargs = super().get_form_kwargs() 53 kwargs.update({ 54 'assignee': self.kwargs['pk'], 55 'manager': self.request.user, 56 'year': self.kwargs['year'], 57 }) 58 return kwargs 59 60 def get_context_data(self, **kwargs): 61 context = super().get_context_data(**kwargs) 62 context["assignee"] = User.objects.get(id=self.kwargs['pk']) 63 return context 64 65 def get_success_url(self): 66 return reverse( 67 'vkk:workhours:allprojects:update_success', kwargs={'year': self.kwargs['year']}, 68 ) 69 70 def form_valid(self, form): 71 form.save() 72 return super().form_valid(form) 73 74 75class AssigneeClosureView(ProjectManagerRequiredMixin, FormView): 76 form_class = AssgineeClosureForm 77 template_name = 'vkk/workhours/contributor/closure.html' 78 79 def post(self, request, *args, **kwargs): 80 form = self.form_class( 81 data={ 82 'period': self.kwargs['period_pk'], 83 'assignee': self.kwargs['assignee_pk'], 84 'manager': self.request.user 85 }, 86 ) 87 if form.is_valid: 88 form.save() 89 return self.form_valid(form) 90 else: 91 return self.handle_no_permission() 92 93 def get_context_data(self, **kwargs): 94 context = super().get_context_data(**kwargs) 95 context.pop('form') 96 return context 97 98 def get_success_url(self): 99 url = reverse( 100 'vkk:workhours:allprojects:closure_success', 101 args=[self.kwargs['year'], self.kwargs['assignee_pk']], 102 ) 103 return url 104 105 106class AssigneeUpdateSuccessView(ProjectManagerRequiredMixin, CustomSuccessView): 107 pass 108 109 110class AssigneeClosureSuccessView(ProjectManagerRequiredMixin, CustomSuccessView): 111 112 def get_success_url(self): 113 url = reverse( 114 'vkk:workhours:allprojects:update', 115 args=[self.kwargs['year'], self.kwargs['assignee_pk']], 116 ) 117 return url
14class AllProjectYearRedirectView(ProjectManagerRequiredMixin, RedirectView): 15 def get_redirect_url(self, *args, **kwargs): 16 # Catches Period Selection from GET 17 if 'year' in self.request.GET: 18 form = YearSelectForm(data=self.request.GET) 19 if form.is_valid(): 20 year = int(form.cleaned_data['year']) 21 else: 22 year = Period.objects.aggregate(Max('start'))['start__max'].year 23 return reverse('vkk:workhours:allprojects:overview', kwargs={'year': year})
Verify that the current user is a manager of at least one project.
15 def get_redirect_url(self, *args, **kwargs): 16 # Catches Period Selection from GET 17 if 'year' in self.request.GET: 18 form = YearSelectForm(data=self.request.GET) 19 if form.is_valid(): 20 year = int(form.cleaned_data['year']) 21 else: 22 year = Period.objects.aggregate(Max('start'))['start__max'].year 23 return reverse('vkk:workhours:allprojects:overview', kwargs={'year': year})
Return the URL redirect to. Keyword arguments from the URL pattern match generating the redirect request are provided as kwargs to this method.
Inherited Members
- django.views.generic.base.View
- View
- view_is_async
- as_view
- setup
- http_method_not_allowed
- django.contrib.auth.mixins.AccessMixin
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission
- django.views.generic.base.RedirectView
- get
- head
- post
- options
- delete
- put
- patch
26class AllProjectAssigneesOverView(ProjectManagerRequiredMixin, CustomListView): 27 model = User 28 fields = ['first_name', 'last_name', 'email'] 29 action_options = {'update': _('Details')} 30 ordering = ['last_name', 'first_name'] 31 template_name = 'vkk/workhours/allprojects/overview.html' 32 33 def get_context_data(self, **kwargs): 34 context = super().get_context_data(**kwargs) 35 context["form"] = YearSelectForm( 36 initial={'year': self.kwargs['year']} 37 ) 38 return context 39 40 def get_queryset(self): 41 query_set = super().get_queryset().filter( 42 projectassignment__project__projectmanager__manager=self.request.user, 43 projectassignment__project__projectmanager__end__gte=timezone.now().date(), 44 ).distinct() 45 return query_set
Verify that the current user is a manager of at least one project.
33 def get_context_data(self, **kwargs): 34 context = super().get_context_data(**kwargs) 35 context["form"] = YearSelectForm( 36 initial={'year': self.kwargs['year']} 37 ) 38 return context
Get the context for this view.
40 def get_queryset(self): 41 query_set = super().get_queryset().filter( 42 projectassignment__project__projectmanager__manager=self.request.user, 43 projectassignment__project__projectmanager__end__gte=timezone.now().date(), 44 ).distinct() 45 return query_set
Return the list of items for this view.
The return value must be an iterable and may be an instance of
QuerySet
in which case QuerySet
specific behavior will be enabled.
Inherited Members
- django.views.generic.base.View
- View
- view_is_async
- as_view
- setup
- http_method_not_allowed
- options
- django.contrib.auth.mixins.AccessMixin
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission
- django.views.generic.list.MultipleObjectTemplateResponseMixin
- get_template_names
- django.views.generic.base.TemplateResponseMixin
- render_to_response
- django.views.generic.list.BaseListView
- get
- django.views.generic.list.MultipleObjectMixin
- get_ordering
- paginate_queryset
- get_paginate_by
- get_paginator
- get_paginate_orphans
- get_allow_empty
- get_context_object_name
48class AssigneeUpdate(ProjectManagerRequiredMixin, FormView): 49 form_class = AssigneeForm 50 template_name = 'vkk/workhours/allprojects/assignee_update.html' 51 52 def get_form_kwargs(self): 53 kwargs = super().get_form_kwargs() 54 kwargs.update({ 55 'assignee': self.kwargs['pk'], 56 'manager': self.request.user, 57 'year': self.kwargs['year'], 58 }) 59 return kwargs 60 61 def get_context_data(self, **kwargs): 62 context = super().get_context_data(**kwargs) 63 context["assignee"] = User.objects.get(id=self.kwargs['pk']) 64 return context 65 66 def get_success_url(self): 67 return reverse( 68 'vkk:workhours:allprojects:update_success', kwargs={'year': self.kwargs['year']}, 69 ) 70 71 def form_valid(self, form): 72 form.save() 73 return super().form_valid(form)
Verify that the current user is a manager of at least one project.
52 def get_form_kwargs(self): 53 kwargs = super().get_form_kwargs() 54 kwargs.update({ 55 'assignee': self.kwargs['pk'], 56 'manager': self.request.user, 57 'year': self.kwargs['year'], 58 }) 59 return kwargs
Return the keyword arguments for instantiating the form.
61 def get_context_data(self, **kwargs): 62 context = super().get_context_data(**kwargs) 63 context["assignee"] = User.objects.get(id=self.kwargs['pk']) 64 return context
Insert the form into the context dict.
66 def get_success_url(self): 67 return reverse( 68 'vkk:workhours:allprojects:update_success', kwargs={'year': self.kwargs['year']}, 69 )
Return the URL to redirect to after processing a valid form.
Inherited Members
- django.views.generic.base.View
- View
- view_is_async
- as_view
- setup
- http_method_not_allowed
- options
- django.contrib.auth.mixins.AccessMixin
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission
- django.views.generic.base.TemplateResponseMixin
- render_to_response
- get_template_names
- django.views.generic.edit.FormMixin
- get_initial
- get_prefix
- get_form_class
- get_form
- form_invalid
- django.views.generic.edit.ProcessFormView
- get
- post
- put
76class AssigneeClosureView(ProjectManagerRequiredMixin, FormView): 77 form_class = AssgineeClosureForm 78 template_name = 'vkk/workhours/contributor/closure.html' 79 80 def post(self, request, *args, **kwargs): 81 form = self.form_class( 82 data={ 83 'period': self.kwargs['period_pk'], 84 'assignee': self.kwargs['assignee_pk'], 85 'manager': self.request.user 86 }, 87 ) 88 if form.is_valid: 89 form.save() 90 return self.form_valid(form) 91 else: 92 return self.handle_no_permission() 93 94 def get_context_data(self, **kwargs): 95 context = super().get_context_data(**kwargs) 96 context.pop('form') 97 return context 98 99 def get_success_url(self): 100 url = reverse( 101 'vkk:workhours:allprojects:closure_success', 102 args=[self.kwargs['year'], self.kwargs['assignee_pk']], 103 ) 104 return url
Verify that the current user is a manager of at least one project.
80 def post(self, request, *args, **kwargs): 81 form = self.form_class( 82 data={ 83 'period': self.kwargs['period_pk'], 84 'assignee': self.kwargs['assignee_pk'], 85 'manager': self.request.user 86 }, 87 ) 88 if form.is_valid: 89 form.save() 90 return self.form_valid(form) 91 else: 92 return self.handle_no_permission()
Handle POST requests: instantiate a form instance with the passed POST variables and then check if it's valid.
94 def get_context_data(self, **kwargs): 95 context = super().get_context_data(**kwargs) 96 context.pop('form') 97 return context
Insert the form into the context dict.
99 def get_success_url(self): 100 url = reverse( 101 'vkk:workhours:allprojects:closure_success', 102 args=[self.kwargs['year'], self.kwargs['assignee_pk']], 103 ) 104 return url
Return the URL to redirect to after processing a valid form.
Inherited Members
- django.views.generic.base.View
- View
- view_is_async
- as_view
- setup
- http_method_not_allowed
- options
- django.contrib.auth.mixins.AccessMixin
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission
- django.views.generic.base.TemplateResponseMixin
- render_to_response
- get_template_names
- django.views.generic.edit.FormMixin
- get_initial
- get_prefix
- get_form_class
- get_form
- get_form_kwargs
- form_valid
- form_invalid
- django.views.generic.edit.ProcessFormView
- get
- put
Verify that the current user is a manager of at least one project.
Inherited Members
- django.views.generic.base.View
- View
- view_is_async
- as_view
- setup
- http_method_not_allowed
- options
- django.contrib.auth.mixins.AccessMixin
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission
- django.views.generic.base.TemplateView
- get
- django.views.generic.base.TemplateResponseMixin
- render_to_response
- get_template_names
- django.views.generic.base.ContextMixin
- get_context_data
111class AssigneeClosureSuccessView(ProjectManagerRequiredMixin, CustomSuccessView): 112 113 def get_success_url(self): 114 url = reverse( 115 'vkk:workhours:allprojects:update', 116 args=[self.kwargs['year'], self.kwargs['assignee_pk']], 117 ) 118 return url
Verify that the current user is a manager of at least one project.
113 def get_success_url(self): 114 url = reverse( 115 'vkk:workhours:allprojects:update', 116 args=[self.kwargs['year'], self.kwargs['assignee_pk']], 117 ) 118 return url
Return the URL meant for redirecting after a successful action.
Inherited Members
- django.views.generic.base.View
- View
- view_is_async
- as_view
- setup
- http_method_not_allowed
- options
- django.contrib.auth.mixins.AccessMixin
- get_login_url
- get_permission_denied_message
- get_redirect_field_name
- handle_no_permission
- django.views.generic.base.TemplateView
- get
- django.views.generic.base.TemplateResponseMixin
- render_to_response
- get_template_names
- django.views.generic.base.ContextMixin
- get_context_data