vkk.users.views

A collection of views for managing Users.

 1"""
 2A collection of views for managing Users.
 3"""
 4from django.shortcuts import redirect
 5from django.urls import reverse_lazy
 6from django.views.generic import FormView, TemplateView
 7from django.core.signing import Signer, BadSignature
 8from django.contrib.auth.mixins import LoginRequiredMixin
 9from .models import SALT, NewUser
10from .forms import ConfirmNewUserForm, UserDetailsChangeForm
11
12
13class RegistrationConfirmView(FormView):
14    """
15    A view class for confirming the registration of a user.
16    """
17    template_name = 'vkk/users/registration_confirm.html'
18    form_class = ConfirmNewUserForm
19    success_url = reverse_lazy('vkk:users:registration_confirm_done')
20
21    def setup(self, request, *args, **kwargs):
22        """
23        Initialize attributes shared by all view methods.
24        """
25        super().setup(request, *args, **kwargs)
26        try:
27            token = Signer(sep='/', salt=SALT).unsign(
28                '/'.join([kwargs['token'], kwargs['signature']])
29            )
30            self.new_user = NewUser.objects.get(token=token)
31            self.is_link_valid = True
32        except (BadSignature, NewUser.DoesNotExist):
33            self.is_link_valid = False
34
35    def dispatch(self, request, *args, **kwargs):
36        """
37        Dispatches a request according to its method.
38        """
39        if not self.is_link_valid:
40            return redirect('vkk:users:invalid_registration')
41        else:
42            return super().dispatch(request, *args, **kwargs)
43
44    def get_form_kwargs(self):
45        """
46        Returns the key word arguments for instantiating the associated
47        form class.
48        """
49        kwargs = super().get_form_kwargs()
50        kwargs.update({'instance': self.new_user.user})
51        return kwargs
52
53    def form_valid(self, form):
54        """
55        Tries to save and return the model instance associated with
56        the form instance of this class's instance.
57        As a result, a new `User` instance is created and a `NewUser` is deleted.
58        """
59        form.save()
60        self.new_user.delete()
61        return super().form_valid(form)
62
63
64class UserDetailsChangeView(LoginRequiredMixin, FormView):
65    """
66    A view for updating a users associated data and credentials.
67    """
68    template_name = 'vkk/users/user_details_change.html'
69    form_class = UserDetailsChangeForm
70
71    def get_form_kwargs(self):
72        """
73        Returns the key word arguments for instantiating the associated
74        form class.
75        """
76        kwargs = super().get_form_kwargs()
77        kwargs.update({'instance': self.request.user})
78        return kwargs
79
80    def form_valid(self, form):
81        """
82        Tries to save and return the model instance associated with
83        the form instance of this class's instance.
84        """
85        form.save()
86        return super().form_valid(form)
87
88
89class UserDetailsChangeSuccessView(LoginRequiredMixin, TemplateView):
90    """
91    This view is used for confirming a successful update of a users data or credentials.
92    """
93    template_name = 'vkk/users/user_details_change_done.html'
class RegistrationConfirmView(django.views.generic.edit.FormView):
14class RegistrationConfirmView(FormView):
15    """
16    A view class for confirming the registration of a user.
17    """
18    template_name = 'vkk/users/registration_confirm.html'
19    form_class = ConfirmNewUserForm
20    success_url = reverse_lazy('vkk:users:registration_confirm_done')
21
22    def setup(self, request, *args, **kwargs):
23        """
24        Initialize attributes shared by all view methods.
25        """
26        super().setup(request, *args, **kwargs)
27        try:
28            token = Signer(sep='/', salt=SALT).unsign(
29                '/'.join([kwargs['token'], kwargs['signature']])
30            )
31            self.new_user = NewUser.objects.get(token=token)
32            self.is_link_valid = True
33        except (BadSignature, NewUser.DoesNotExist):
34            self.is_link_valid = False
35
36    def dispatch(self, request, *args, **kwargs):
37        """
38        Dispatches a request according to its method.
39        """
40        if not self.is_link_valid:
41            return redirect('vkk:users:invalid_registration')
42        else:
43            return super().dispatch(request, *args, **kwargs)
44
45    def get_form_kwargs(self):
46        """
47        Returns the key word arguments for instantiating the associated
48        form class.
49        """
50        kwargs = super().get_form_kwargs()
51        kwargs.update({'instance': self.new_user.user})
52        return kwargs
53
54    def form_valid(self, form):
55        """
56        Tries to save and return the model instance associated with
57        the form instance of this class's instance.
58        As a result, a new `User` instance is created and a `NewUser` is deleted.
59        """
60        form.save()
61        self.new_user.delete()
62        return super().form_valid(form)

A view class for confirming the registration of a user.

template_name = 'vkk/users/registration_confirm.html'
form_class = <class 'vkk.users.forms.ConfirmNewUserForm'>
success_url = '/registrierungsbestaetigung/erfolg/'
def setup(self, request, *args, **kwargs):
22    def setup(self, request, *args, **kwargs):
23        """
24        Initialize attributes shared by all view methods.
25        """
26        super().setup(request, *args, **kwargs)
27        try:
28            token = Signer(sep='/', salt=SALT).unsign(
29                '/'.join([kwargs['token'], kwargs['signature']])
30            )
31            self.new_user = NewUser.objects.get(token=token)
32            self.is_link_valid = True
33        except (BadSignature, NewUser.DoesNotExist):
34            self.is_link_valid = False

Initialize attributes shared by all view methods.

def dispatch(self, request, *args, **kwargs):
36    def dispatch(self, request, *args, **kwargs):
37        """
38        Dispatches a request according to its method.
39        """
40        if not self.is_link_valid:
41            return redirect('vkk:users:invalid_registration')
42        else:
43            return super().dispatch(request, *args, **kwargs)

Dispatches a request according to its method.

def get_form_kwargs(self):
45    def get_form_kwargs(self):
46        """
47        Returns the key word arguments for instantiating the associated
48        form class.
49        """
50        kwargs = super().get_form_kwargs()
51        kwargs.update({'instance': self.new_user.user})
52        return kwargs

Returns the key word arguments for instantiating the associated form class.

def form_valid(self, form):
54    def form_valid(self, form):
55        """
56        Tries to save and return the model instance associated with
57        the form instance of this class's instance.
58        As a result, a new `User` instance is created and a `NewUser` is deleted.
59        """
60        form.save()
61        self.new_user.delete()
62        return super().form_valid(form)

Tries to save and return the model instance associated with the form instance of this class's instance. As a result, a new User instance is created and a NewUser is deleted.

Inherited Members
django.views.generic.base.View
View
http_method_names
view_is_async
as_view
http_method_not_allowed
options
django.views.generic.base.TemplateResponseMixin
template_engine
response_class
content_type
render_to_response
get_template_names
django.views.generic.edit.FormMixin
initial
prefix
get_initial
get_prefix
get_form_class
get_form
get_success_url
form_invalid
get_context_data
django.views.generic.base.ContextMixin
extra_context
django.views.generic.edit.ProcessFormView
get
post
put
class UserDetailsChangeView(django.contrib.auth.mixins.LoginRequiredMixin, django.views.generic.edit.FormView):
65class UserDetailsChangeView(LoginRequiredMixin, FormView):
66    """
67    A view for updating a users associated data and credentials.
68    """
69    template_name = 'vkk/users/user_details_change.html'
70    form_class = UserDetailsChangeForm
71
72    def get_form_kwargs(self):
73        """
74        Returns the key word arguments for instantiating the associated
75        form class.
76        """
77        kwargs = super().get_form_kwargs()
78        kwargs.update({'instance': self.request.user})
79        return kwargs
80
81    def form_valid(self, form):
82        """
83        Tries to save and return the model instance associated with
84        the form instance of this class's instance.
85        """
86        form.save()
87        return super().form_valid(form)

A view for updating a users associated data and credentials.

template_name = 'vkk/users/user_details_change.html'
form_class = <class 'vkk.users.forms.UserDetailsChangeForm'>
def get_form_kwargs(self):
72    def get_form_kwargs(self):
73        """
74        Returns the key word arguments for instantiating the associated
75        form class.
76        """
77        kwargs = super().get_form_kwargs()
78        kwargs.update({'instance': self.request.user})
79        return kwargs

Returns the key word arguments for instantiating the associated form class.

def form_valid(self, form):
81    def form_valid(self, form):
82        """
83        Tries to save and return the model instance associated with
84        the form instance of this class's instance.
85        """
86        form.save()
87        return super().form_valid(form)

Tries to save and return the model instance associated with the form instance of this class's instance.

Inherited Members
django.views.generic.base.View
View
http_method_names
view_is_async
as_view
setup
http_method_not_allowed
options
django.contrib.auth.mixins.LoginRequiredMixin
dispatch
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
django.views.generic.base.TemplateResponseMixin
template_engine
response_class
content_type
render_to_response
get_template_names
django.views.generic.edit.FormMixin
initial
success_url
prefix
get_initial
get_prefix
get_form_class
get_form
get_success_url
form_invalid
get_context_data
django.views.generic.base.ContextMixin
extra_context
django.views.generic.edit.ProcessFormView
get
post
put
class UserDetailsChangeSuccessView(django.contrib.auth.mixins.LoginRequiredMixin, django.views.generic.base.TemplateView):
90class UserDetailsChangeSuccessView(LoginRequiredMixin, TemplateView):
91    """
92    This view is used for confirming a successful update of a users data or credentials.
93    """
94    template_name = 'vkk/users/user_details_change_done.html'

This view is used for confirming a successful update of a users data or credentials.

template_name = 'vkk/users/user_details_change_done.html'
Inherited Members
django.views.generic.base.View
View
http_method_names
view_is_async
as_view
setup
http_method_not_allowed
options
django.contrib.auth.mixins.LoginRequiredMixin
dispatch
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
django.views.generic.base.TemplateView
get
django.views.generic.base.TemplateResponseMixin
template_engine
response_class
content_type
render_to_response
get_template_names
django.views.generic.base.ContextMixin
extra_context
get_context_data