Coverage for accounts/views.py: 100.00%

24 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-02 19:56 -0700

1"""Views for kbowen-django-blog 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 

7from django.views.generic import ( 

8 DetailView, 

9 RedirectView, 

10 UpdateView, 

11) 

12 

13User = get_user_model() 

14 

15 

16class UserDetailView(LoginRequiredMixin, DetailView): 

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

18 

19 model = User 

20 slug_field = "username" 

21 slug_url_kwarg = "username" 

22 

23 template_name = "account/user_detail.html" 

24 

25 

26class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): 

27 """Edit user profiles.""" 

28 

29 fields = [ 

30 "name", 

31 "age", 

32 "bio", 

33 "country", 

34 "profile_pic", 

35 ] 

36 model = User 

37 success_message = "Your profile was updated successfully." 

38 # success_message = "%(name)s's profile was updated successfully." 

39 

40 def get_success_url(self): 

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

42 return reverse( 1bc

43 "user_detail", 

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

45 ) 

46 

47 def get_object(self): 

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

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

50 

51 template_name = "account/user_form.html" 

52 

53 

54class UserRedirectView(LoginRequiredMixin, RedirectView): 

55 """Navigate to users profile page.""" 

56 

57 permanent = False 

58 

59 def get_redirect_url(self): 

60 """Return user's profile page.""" 

61 return reverse( 1e

62 "user_detail", 

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

64 )