Coverage for accounts/views.py: 100.00%
29 statements
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-10 15:27 -0700
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-10 15:27 -0700
1"""Views for django-start 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 """
27 Tell the view to index lookups by username.
28 Display an individual :model:`accounts.CustomUser`
30 **Context**
32 ``accounts``
33 An instance of :model:`accounts.CustomUser`
35 **Template**
37 :template:`account/user_detail.html`
38 """
40 model = User
41 slug_field = "username"
42 slug_url_kwarg = "username"
44 template_name = "account/user_detail.html"
47class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
48 """
49 Permit user to edit own account information.
50 Display an individual :model:`accounts.CustomUser`
52 **Context**
54 ``accounts``
55 An instance of :model:`accounts.CustomUser`
57 **Template**
59 :template:`account/user_form.html`
60 """
62 fields = [
63 "name",
64 "age",
65 "bio",
66 "country",
67 "profile_pic",
68 ]
69 model = User
70 success_message = "Your profile was updated successfully."
71 # success_message = "%(name)s's profile has been successfully updated."
73 def get_success_url(self):
74 """Send the user back to their own page after a successful update."""
75 return reverse( 1bc
76 "user_detail",
77 kwargs={"username": self.request.user.username},
78 )
80 def get_object(self):
81 """Only get the user record for the user making the request."""
82 return User.objects.get(username=self.request.user.username) 1bd
84 template_name = "account/user_form.html"
87class UserRedirectView(LoginRequiredMixin, RedirectView):
88 permanent = False
90 def get_redirect_url(self):
91 return reverse( 1e
92 "user_detail",
93 kwargs={"username": self.request.user.username},
94 )