Coverage for accounts/views.py: 100.00%

29 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-13 20:21 -0700

1from django.contrib.auth import get_user_model 1a

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

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

4from django.urls import reverse, reverse_lazy 1a

5from django.views.generic import ( 1a

6 CreateView, 

7 DetailView, 

8 RedirectView, 

9 UpdateView, 

10) 

11 

12from .forms import CustomUserCreationForm 1a

13 

14User = get_user_model() 1a

15 

16 

17class SignupPageView(CreateView): 1a

18 form_class = CustomUserCreationForm 1a

19 success_url = reverse_lazy("login") 1a

20 template_name = "accounts/signup.html" 1a

21 

22 

23class UserDetailView(LoginRequiredMixin, DetailView): 1a

24 model = User 1a

25 # Tell the view to index lookups by username 

26 slug_field = "username" 1a

27 slug_url_kwarg = "username" 1a

28 

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

30 

31 

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

33 fields = [ 1a

34 "name", 

35 "age", 

36 "bio", 

37 "country", 

38 "profile_pic", 

39 ] 

40 model = User 1a

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

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

43 

44 # Send the user back to their own page after a successful update 

45 def get_success_url(self): 1a

46 return reverse( 1a

47 "user_detail", 

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

49 ) 

50 

51 def get_object(self): 1a

52 # Only get the user record for the user making the request 

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

54 

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

56 

57 

58class UserRedirectView(LoginRequiredMixin, RedirectView): 1a

59 permanent = False 1a

60 

61 def get_redirect_url(self): 1a

62 return reverse( 1a

63 "user_detail", 

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

65 )