Coverage for cheese/users/views.py: 100.00%

23 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-16 16:36 -0700

1from django.contrib.auth import get_user_model 

2from django.contrib.auth.mixins import LoginRequiredMixin 

3from django.urls import reverse 

4from django.views.generic import ( 

5 DetailView, 

6 RedirectView, 

7 UpdateView, 

8) 

9 

10User = get_user_model() 

11 

12 

13class UserDetailView(LoginRequiredMixin, DetailView): 

14 model = User 

15 # These Next Two Lines Tell the View to Index 

16 # Lookups by Username 

17 slug_field = "username" 

18 slug_url_kwarg = "username" 

19 

20 

21user_detail_view = UserDetailView.as_view() 

22 

23 

24class UserUpdateView(LoginRequiredMixin, UpdateView): 

25 fields = [ 

26 "name", 

27 "bio", 

28 ] 

29 

30 # We already imported user in the View code above, 

31 # remember? 

32 model = User 

33 

34 # Send the User Back to Their Own Page after a 

35 # successful Update 

36 def get_success_url(self): 

37 return reverse( 1bc

38 "users:detail", 

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

40 ) 

41 

42 def get_object(self): 

43 # Only Get the User Record for the 

44 # User Making the Request 

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

46 

47 

48user_update_view = UserUpdateView.as_view() 

49 

50 

51class UserRedirectView(LoginRequiredMixin, RedirectView): 

52 permanent = False 

53 

54 def get_redirect_url(self): 

55 return reverse( 1e

56 "users:detail", 

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

58 ) 

59 

60 

61user_redirect_view = UserRedirectView.as_view()