From f1fffdbac4de90c9500e8aaa1b56880d678162f4 Mon Sep 17 00:00:00 2001
From: Jacob Coffee
Date: Wed, 7 Oct 2026 22:21:38 -0500
Subject: [PATCH 1/9] rm slugged urls
---
apps/users/urls.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/users/urls.py b/apps/users/urls.py
index 110090ff4..a452f17d6 100644
--- a/apps/users/urls.py
+++ b/apps/users/urls.py
@@ -7,6 +7,8 @@
app_name = "users"
urlpatterns = [
path("edit/", views.UserUpdate.as_view(), name="user_profile_edit"),
+ path("profile/detail/", views.UserDetail.as_view(), name="user_detail"),
+ path("profile/delete/", views.UserDeleteView.as_view(), name="user_delete"),
path("membership/", views.MembershipCreate.as_view(), name="user_membership_create"),
path("membership/edit/", views.MembershipUpdate.as_view(), name="user_membership_edit"),
re_path(
@@ -44,6 +46,4 @@
views.SponsorshipDetailView.as_view(),
name="sponsorship_application_detail",
),
- re_path(r"^(?P[-a-zA-Z0-9_\@\.+]+)/delete/$", views.UserDeleteView.as_view(), name="user_delete"),
- re_path(r"^(?P[-a-zA-Z0-9_\@\.+]+)/$", views.UserDetail.as_view(), name="user_detail"),
]
From a990795f81ee98e7904b410d105ad115f7f1bc6b Mon Sep 17 00:00:00 2001
From: Jacob Coffee
Date: Wed, 7 Oct 2026 22:22:20 -0500
Subject: [PATCH 2/9] show only users profile
---
apps/users/views.py | 30 ++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)
diff --git a/apps/users/views.py b/apps/users/views.py
index 9a3264d2e..f180eb707 100644
--- a/apps/users/views.py
+++ b/apps/users/views.py
@@ -127,8 +127,8 @@ class UserUpdate(LoginRequiredMixin, UpdateView):
"""Edit the current user's profile information."""
form_class = UserProfileForm
- slug_field = "username"
template_name = "users/user_form.html"
+ success_url = reverse_lazy("users:user_detail")
@method_decorator(check_honeypot)
def dispatch(self, *args, **kwargs):
@@ -140,17 +140,14 @@ def get_object(self, queryset=None):
return User.objects.get(username=self.request.user)
-class UserDetail(DetailView):
- """Display a user's public profile page."""
+class UserDetail(LoginRequiredMixin, DetailView):
+ """Display the logged-in user's own profile details."""
- slug_field = "username"
+ template_name = "users/user_detail.html"
- def get_queryset(self):
- """Return all users if viewing own profile, searchable users otherwise."""
- queryset = User.objects.select_related()
- if self.request.user.username == self.kwargs["slug"]:
- return queryset
- return queryset.searchable()
+ def get_object(self, queryset=None):
+ """Return the current logged-in user."""
+ return self.request.user
class HoneypotSignupView(SignupView):
@@ -178,18 +175,15 @@ def get_success_url(self):
return reverse("users:user_profile_edit")
-class UserDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
+class UserDeleteView(LoginRequiredMixin, DeleteView):
"""Allow users to delete their own account."""
- model = User
success_url = reverse_lazy("home")
- slug_field = "username"
- raise_exception = True
http_method_names = ["post", "delete"]
- def test_func(self):
- """Only allow users to delete their own account."""
- return self.get_object() == self.request.user
+ def get_object(self, queryset=None):
+ """Return the current logged-in user."""
+ return self.request.user
class MembershipDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
@@ -202,7 +196,7 @@ class MembershipDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
def get_success_url(self):
"""Redirect to the user's profile page after deletion."""
- return reverse("users:user_detail", kwargs={"slug": self.request.user.username})
+ return reverse("users:user_detail")
def test_func(self):
"""Only allow the membership creator to delete it."""
From f82b910edfb759b8e704ed5c75f2135b47173585 Mon Sep 17 00:00:00 2001
From: Jacob Coffee
Date: Wed, 7 Oct 2026 22:22:31 -0500
Subject: [PATCH 3/9] no username needed
---
apps/users/templates/users/user_form.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/users/templates/users/user_form.html b/apps/users/templates/users/user_form.html
index 0ccf7a900..3eab0c8d6 100644
--- a/apps/users/templates/users/user_form.html
+++ b/apps/users/templates/users/user_form.html
@@ -42,7 +42,7 @@ Edit information for: {% firstof user.get_full
-
{% if request.user.has_membership %}
-