Coverage for accounts/views.py: 100.00%
29 statements
« prev ^ index » next coverage.py v7.10.1, created at 2025-08-03 13:46 -0700
« prev ^ index » next coverage.py v7.10.1, created at 2025-08-03 13:46 -0700
1"""Views for djapi-blog 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, reverse_lazy
7from django.views.generic import (
8 CreateView,
9 DetailView,
10 RedirectView,
11 UpdateView,
12)
14from .forms import CustomUserCreationForm
16User = get_user_model()
19class SignupPageView(CreateView):
20 form_class = CustomUserCreationForm
21 success_url = reverse_lazy("account_login")
22 template_name = "account/signup.html"
25class UserDetailView(LoginRequiredMixin, DetailView):
26 """Tell the view to index lookups by username."""
28 model = User
29 slug_field = "username"
30 slug_url_kwarg = "username"
32 template_name = "account/user_detail.html"
35class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
36 fields = [
37 "name",
38 "bio",
39 "country",
40 "profile_pic",
41 ]
42 model = User
43 success_message = "Your profile was updated successfully."
45 def get_success_url(self):
46 """Send the user back to their own page after a successful update."""
47 return reverse( 1bc
48 "user_detail",
49 kwargs={"username": self.request.user.username},
50 )
52 def get_object(self):
53 """Only get the user record for the user making the request."""
54 return User.objects.get(username=self.request.user.username) 1bd
56 template_name = "account/user_form.html"
59class UserRedirectView(LoginRequiredMixin, RedirectView):
60 permanent = False
62 def get_redirect_url(self):
63 return reverse( 1e
64 "user_detail",
65 kwargs={"username": self.request.user.username},
66 )