Skip to content

Commit 9d5cfe0

Browse files
committed
fix: return an empty profile page when not found
Signed-off-by: Mike Fiedler <[email protected]>
1 parent 023121f commit 9d5cfe0

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

templates/users/user_detail.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{% extends "users/base.html" %}
22
{% load users_tags %}
33

4-
{% block page_title %}{% firstof object.get_full_name object %} | Our Users &amp; Members | {{ SITE_INFO.site_name }}{% endblock %}
4+
{% block page_title %}Our Users &amp; Members | {{ SITE_INFO.site_name }}{% endblock %}
55

66
{% block body_attributes %}class="psf users default-page"{% endblock %}
77

users/tests/test_views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,15 @@ def test_user_update_redirect(self):
149149
profile_url = reverse('users:user_detail', kwargs={'slug': 'username'})
150150
self.assertRedirects(response, profile_url)
151151

152-
# should return 404 for another user
152+
# should return 200 for another user
153153
another_user_url = reverse('users:user_detail', kwargs={'slug': 'spameggs'})
154154
response = self.client.get(another_user_url)
155-
self.assertEqual(response.status_code, 404)
155+
self.assertEqual(response.status_code, 200)
156156

157-
# should return 404 if the user is not logged-in
157+
# should return 200 if the user is not logged-in
158158
self.client.logout()
159159
response = self.client.get(profile_url)
160-
self.assertEqual(response.status_code, 404)
160+
self.assertEqual(response.status_code, 200)
161161

162162
def test_user_detail(self):
163163
# Ensure detail page is viewable without login, but that edit URLs
@@ -184,7 +184,7 @@ def test_user_detail(self):
184184
self.assertFalse(user.is_active)
185185
detail_url = reverse('users:user_detail', kwargs={'slug': user.username})
186186
response = self.client.get(detail_url)
187-
self.assertEqual(response.status_code, 404)
187+
self.assertEqual(response.status_code, 200)
188188

189189
def test_special_usernames(self):
190190
# Ensure usernames in the forms of:

users/views.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.contrib import messages
44
from django.contrib.auth import get_user_model
55
from django.contrib.auth.mixins import UserPassesTestMixin
6+
from django.contrib.auth.models import AnonymousUser
67
from django.conf import settings
78
from django.core.mail import send_mail
89
from django.db.models import Subquery
@@ -126,13 +127,20 @@ def get_object(self, queryset=None):
126127

127128
class UserDetail(DetailView):
128129
slug_field = 'username'
130+
template_name = 'users/user_detail.html'
129131

130132
def get_queryset(self):
131133
queryset = User.objects.select_related()
132134
if self.request.user.username == self.kwargs['slug']:
133135
return queryset
134136
return queryset.searchable()
135137

138+
def get_object(self, queryset=None):
139+
try:
140+
return super().get_object(queryset)
141+
except Http404:
142+
return AnonymousUser()
143+
136144

137145
class HoneypotSignupView(SignupView):
138146

0 commit comments

Comments
 (0)