Coverage for accounts/views.py: 100.00%

24 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-13 15:39 -0700

1"""Views for library 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 fields = [ 

28 "name", 

29 "age", 

30 "bio", 

31 "country", 

32 "profile_pic", 

33 ] 

34 model = User 

35 success_message = "Your profile was updated successfully." 

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

37 

38 def get_success_url(self): 

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

40 return reverse( 1bc

41 "user_detail", 

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

43 ) 

44 

45 def get_object(self): 

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

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

48 

49 template_name = "account/user_form.html" 

50 

51 

52class UserRedirectView(LoginRequiredMixin, RedirectView): 

53 permanent = False 

54 

55 def get_redirect_url(self): 

56 return reverse( 1e

57 "user_detail", 

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

59 )