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
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 15:39 -0700
1"""Views for library user accounts."""
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)
13User = get_user_model()
16class UserDetailView(LoginRequiredMixin, DetailView):
17 """Tell the view to index lookups by username."""
19 model = User
20 slug_field = "username"
21 slug_url_kwarg = "username"
23 template_name = "account/user_detail.html"
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."
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 )
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
49 template_name = "account/user_form.html"
52class UserRedirectView(LoginRequiredMixin, RedirectView):
53 permanent = False
55 def get_redirect_url(self):
56 return reverse( 1e
57 "user_detail",
58 kwargs={"username": self.request.user.username},
59 )