Coverage for accounts/views.py: 100.00%

29 statements  

« prev     ^ index     » next       coverage.py v7.8.2, created at 2025-06-10 15:27 -0700

1"""Views for django-start user accounts.""" 

2 

3from django.contrib.auth import get_user_model 

4from django.contrib.auth.mixins import LoginRequiredMixin 

5from django.contrib.messages.views import SuccessMessageMixin 

6from django.urls import reverse, reverse_lazy 

7from django.views.generic import ( 

8 CreateView, 

9 DetailView, 

10 RedirectView, 

11 UpdateView, 

12) 

13 

14from .forms import CustomUserCreationForm 

15 

16User = get_user_model() 

17 

18 

19class SignupPageView(CreateView): 

20 form_class = CustomUserCreationForm 

21 success_url = reverse_lazy("account_login") 

22 template_name = "account/signup.html" 

23 

24 

25class UserDetailView(LoginRequiredMixin, DetailView): 

26 """ 

27 Tell the view to index lookups by username. 

28 Display an individual :model:`accounts.CustomUser` 

29 

30 **Context** 

31 

32 ``accounts`` 

33 An instance of :model:`accounts.CustomUser` 

34 

35 **Template** 

36 

37 :template:`account/user_detail.html` 

38 """ 

39 

40 model = User 

41 slug_field = "username" 

42 slug_url_kwarg = "username" 

43 

44 template_name = "account/user_detail.html" 

45 

46 

47class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): 

48 """ 

49 Permit user to edit own account information. 

50 Display an individual :model:`accounts.CustomUser` 

51 

52 **Context** 

53 

54 ``accounts`` 

55 An instance of :model:`accounts.CustomUser` 

56 

57 **Template** 

58 

59 :template:`account/user_form.html` 

60 """ 

61 

62 fields = [ 

63 "name", 

64 "age", 

65 "bio", 

66 "country", 

67 "profile_pic", 

68 ] 

69 model = User 

70 success_message = "Your profile was updated successfully." 

71 # success_message = "%(name)s's profile has been successfully updated." 

72 

73 def get_success_url(self): 

74 """Send the user back to their own page after a successful update.""" 

75 return reverse( 1bc

76 "user_detail", 

77 kwargs={"username": self.request.user.username}, 

78 ) 

79 

80 def get_object(self): 

81 """Only get the user record for the user making the request.""" 

82 return User.objects.get(username=self.request.user.username) 1bd

83 

84 template_name = "account/user_form.html" 

85 

86 

87class UserRedirectView(LoginRequiredMixin, RedirectView): 

88 permanent = False 

89 

90 def get_redirect_url(self): 

91 return reverse( 1e

92 "user_detail", 

93 kwargs={"username": self.request.user.username}, 

94 )