vkk.workhours.accounting.users.views

 1from smtplib import SMTPException
 2from vkk.workhours.accounting.views import AccountingCreateView, AccountingDetailView
 3from vkk.users.models import User, NewUser, send_registration_mail
 4from vkk.workhours.models import ProjectAssignment, ProjectManager
 5
 6class UserCreateView(AccountingCreateView):
 7    model = User
 8    fields = ['first_name', 'last_name', 'email']
 9
10    def form_valid(self, form):
11        user = form.instance
12        user.set_unusable_password()
13        response = super().form_valid(form)
14        try:
15            send_registration_mail(user)
16        except SMTPException:
17            user.delete()
18            raise
19        return response
20
21class AccountingUserDetailView(AccountingDetailView):
22    template_name = 'vkk/workhours/accounting/users/details.html'
23    model = User
24    fields = ['first_name', 'last_name', 'email', 'last_login', 'is_accountant', 'is_active']
25
26    def get_context_data(self, **kwargs):
27        context = super().get_context_data(**kwargs)
28        manages = ProjectManager.objects.filter(
29            manager__pk=self.kwargs['pk']
30        ).select_related('project').order_by('project__invoice_number')
31        assignments = ProjectAssignment.objects.filter(
32            contributor__pk=self.kwargs['pk']
33        ).select_related('project').order_by('project__invoice_number')
34        context['manages'] = manages
35        context['assignments'] = assignments
36        return context
class UserCreateView(vkk.workhours.accounting.views.AccountingCreateView):
 7class UserCreateView(AccountingCreateView):
 8    model = User
 9    fields = ['first_name', 'last_name', 'email']
10
11    def form_valid(self, form):
12        user = form.instance
13        user.set_unusable_password()
14        response = super().form_valid(form)
15        try:
16            send_registration_mail(user)
17        except SMTPException:
18            user.delete()
19            raise
20        return response

Verify that the current user has accountant rights.

def form_valid(self, form):
11    def form_valid(self, form):
12        user = form.instance
13        user.set_unusable_password()
14        response = super().form_valid(form)
15        try:
16            send_registration_mail(user)
17        except SMTPException:
18            user.delete()
19            raise
20        return response

If the form is valid, save the associated model.

Inherited Members
django.views.generic.base.View
View
view_is_async
as_view
setup
http_method_not_allowed
options
vkk.workhours.accounting.mixins.AccountantRequiredMixin
dispatch
django.contrib.auth.mixins.AccessMixin
get_login_url
get_permission_denied_message
get_redirect_field_name
handle_no_permission
vkk.generic.mixins.OnSuccessMixin
get_success_url
django.views.generic.detail.SingleObjectTemplateResponseMixin
get_template_names
django.views.generic.base.TemplateResponseMixin
render_to_response
django.views.generic.edit.BaseCreateView
get
post
django.views.generic.edit.ModelFormMixin
get_form_class
get_form_kwargs
django.views.generic.edit.FormMixin
get_initial
get_prefix
get_form
form_invalid
get_context_data
django.views.generic.detail.SingleObjectMixin
get_object
get_queryset
get_slug_field
get_context_object_name
django.views.generic.edit.ProcessFormView
put
class AccountingUserDetailView(vkk.workhours.accounting.views.AccountingDetailView):
22class AccountingUserDetailView(AccountingDetailView):
23    template_name = 'vkk/workhours/accounting/users/details.html'
24    model = User
25    fields = ['first_name', 'last_name', 'email', 'last_login', 'is_accountant', 'is_active']
26
27    def get_context_data(self, **kwargs):
28        context = super().get_context_data(**kwargs)
29        manages = ProjectManager.objects.filter(
30            manager__pk=self.kwargs['pk']
31        ).select_related('project').order_by('project__invoice_number')
32        assignments = ProjectAssignment.objects.filter(
33            contributor__pk=self.kwargs['pk']
34        ).select_related('project').order_by('project__invoice_number')
35        context['manages'] = manages
36        context['assignments'] = assignments
37        return context

Verify that the current user has accountant rights.

def get_context_data(self, **kwargs):
27    def get_context_data(self, **kwargs):
28        context = super().get_context_data(**kwargs)
29        manages = ProjectManager.objects.filter(
30            manager__pk=self.kwargs['pk']
31        ).select_related('project').order_by('project__invoice_number')
32        assignments = ProjectAssignment.objects.filter(
33            contributor__pk=self.kwargs['pk']
34        ).select_related('project').order_by('project__invoice_number')
35        context['manages'] = manages
36        context['assignments'] = assignments
37        return context

Insert the single object into the context dict.

Inherited Members
django.views.generic.base.View
View
view_is_async
as_view
setup
http_method_not_allowed
options
vkk.workhours.accounting.mixins.AccountantRequiredMixin
dispatch
django.contrib.auth.mixins.AccessMixin
get_login_url
get_permission_denied_message
get_redirect_field_name
handle_no_permission
django.views.generic.detail.SingleObjectTemplateResponseMixin
get_template_names
django.views.generic.base.TemplateResponseMixin
render_to_response
django.views.generic.detail.BaseDetailView
get
django.views.generic.detail.SingleObjectMixin
get_object
get_queryset
get_slug_field
get_context_object_name