Coverage for accounts/views.py: 100.00%

30 statements  

« prev     ^ index     » next       coverage.py v7.17.0, created at 2026-10-30 10:08 -0700

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

2from typing import ClassVar 1a

3 

4from django.contrib.auth import get_user_model 1a

5from django.contrib.auth.mixins import LoginRequiredMixin 1a

6from django.contrib.messages.views import SuccessMessageMixin 1a

7from django.urls import reverse, reverse_lazy 1a

8from django.views.generic import ( 1a

9 CreateView, 

10 DetailView, 

11 RedirectView, 

12 UpdateView, 

13) 

14 

15from .forms import CustomUserCreationForm 1a

16 

17User = get_user_model() 1a

18 

19 

20class SignupPageView(CreateView): 1a

21 form_class = CustomUserCreationForm 1a

22 success_url = reverse_lazy("account_login") 1a

23 template_name = "account/signup.html" 1a

24 

25 

26class UserDetailView(LoginRequiredMixin, DetailView): 1a

27 """Tell the view to index lookups by username.""" 

28 

29 model = User 1a

30 slug_field = "username" 1a

31 slug_url_kwarg = "username" 1a

32 

33 template_name = "account/user_detail.html" 1a

34 

35 

36class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): 1a

37 fields: ClassVar[list[str]] = [ 1a

38 "name", 

39 "age", 

40 "bio", 

41 "country", 

42 "profile_pic", 

43 ] 

44 model = User 1a

45 success_message = "Your profile was updated successfully." 1a

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

47 

48 def get_success_url(self): 1a

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

50 return reverse( 1a

51 "user_detail", 

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

53 ) 

54 

55 def get_object(self): 1a

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

57 return User.objects.get(username=self.request.user.username) 1a

58 

59 template_name = "account/user_form.html" 1a

60 

61 

62class UserRedirectView(LoginRequiredMixin, RedirectView): 1a

63 permanent = False 1a

64 

65 def get_redirect_url(self): 1a

66 return reverse( 1a

67 "user_detail", 

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

69 )