Coverage for accounts/views.py: 100.00%
24 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-22 12:02 -0700
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-22 12:02 -0700
1"""Views for kbowen-django-blog user accounts."""
3from django.contrib.auth import get_user_model 1a
4from django.contrib.auth.mixins import LoginRequiredMixin 1a
5from django.contrib.messages.views import SuccessMessageMixin 1a
6from django.urls import reverse 1a
7from django.views.generic import ( 1a
8 DetailView,
9 RedirectView,
10 UpdateView,
11)
13User = get_user_model() 1a
16class UserDetailView(LoginRequiredMixin, DetailView): 1a
17 """Tell the view to index lookups by username."""
19 model = User 1a
20 slug_field = "username" 1a
21 slug_url_kwarg = "username" 1a
23 template_name = "account/user_detail.html" 1a
26class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): 1a
27 """Edit user profiles."""
29 fields = [ 1a
30 "name",
31 "age",
32 "bio",
33 "country",
34 "profile_pic",
35 ]
36 model = User 1a
37 success_message = "Your profile was updated successfully." 1a
38 # success_message = "%(name)s's profile was updated successfully."
40 def get_success_url(self): 1a
41 """Send the user back to their own page after a successful update."""
42 return reverse( 1a
43 "user_detail",
44 kwargs={"username": self.request.user.username},
45 )
47 def get_object(self): 1a
48 """Only get the user record for the user making the request."""
49 return User.objects.get(username=self.request.user.username) 1a
51 template_name = "account/user_form.html" 1a
54class UserRedirectView(LoginRequiredMixin, RedirectView): 1a
55 """Navigate to users profile page."""
57 permanent = False 1a
59 def get_redirect_url(self): 1a
60 """Return user's profile page."""
61 return reverse( 1a
62 "user_detail",
63 kwargs={"username": self.request.user.username},
64 )