Coverage for accounts/views.py: 100.00%
27 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 19:27 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 19:27 -0700
1"""Views for djapi-library user accounts."""
3from django.contrib.auth import get_user_model
4from django.contrib.auth.mixins import LoginRequiredMixin
5from django.urls import reverse, reverse_lazy
6from django.views.generic import (
7 CreateView,
8 DetailView,
9 RedirectView,
10 UpdateView,
11)
13from .forms import CustomUserCreationForm
15User = get_user_model()
18class SignupPageView(CreateView):
19 form_class = CustomUserCreationForm
20 success_url = reverse_lazy("account_login")
21 template_name = "account/signup.html"
24class UserDetailView(LoginRequiredMixin, DetailView):
25 """Tell the view to index lookups by username."""
27 model = User
28 slug_field = "username"
29 slug_url_kwarg = "username"
31 template_name = "account/user_detail.html"
34class UserUpdateView(LoginRequiredMixin, UpdateView):
35 fields = [
36 "name",
37 "bio",
38 "country",
39 "profile_pic",
40 ]
41 model = User
43 def get_success_url(self):
44 """Send the user back to their own page after a successful update."""
45 return reverse( 1bc
46 "user_detail",
47 kwargs={"username": self.request.user.username},
48 )
50 def get_object(self):
51 """Only get the user record for the user making the request."""
52 return User.objects.get(username=self.request.user.username) 1bd
54 template_name = "account/user_form.html"
57class UserRedirectView(LoginRequiredMixin, RedirectView):
58 permanent = False
60 def get_redirect_url(self):
61 return reverse( 1e
62 "user_detail",
63 kwargs={"username": self.request.user.username},
64 )