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'
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.
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.
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.
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.
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
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.
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.
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
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.
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