Coverage for accounts/views.py: 100.00%

29 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-13 16:05 -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 """Tell the view to index lookups by username.""" 

27 

28 model = User 

29 slug_field = "username" 

30 slug_url_kwarg = "username" 

31 

32 template_name = "account/user_detail.html" 

33 

34 

35class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): 

36 fields = [ 

37 "name", 

38 "age", 

39 "bio", 

40 "country", 

41 "profile_pic", 

42 ] 

43 model = User 

44 success_message = "Your profile was updated successfully." 

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

46 

47 def get_success_url(self): 

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

49 return reverse( 1bc

50 "user_detail", 

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

52 ) 

53 

54 def get_object(self): 

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

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

57 

58 template_name = "account/user_form.html" 

59 

60 

61class UserRedirectView(LoginRequiredMixin, RedirectView): 

62 permanent = False 

63 

64 def get_redirect_url(self): 

65 return reverse( 1e

66 "user_detail", 

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

68 )