From 8b18999514dd86aa0f2dcabda1c2d221f61564ae Mon Sep 17 00:00:00 2001 From: Sli Date: Sat, 18 Apr 2026 18:09:04 +0200 Subject: [PATCH] Fix hidden user can't search itself --- core/models.py | 4 +++- core/tests/test_user.py | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/models.py b/core/models.py index 0f0ef10e..43d2e7ca 100644 --- a/core/models.py +++ b/core/models.py @@ -131,7 +131,9 @@ class UserQuerySet(models.QuerySet): if user.has_perm("core.view_hidden_user"): return self if user.has_perm("core.view_user"): - return self.filter(Q(is_viewable=True) | Q(whitelisted_users=user)) + return self.filter( + Q(is_viewable=True) | Q(whitelisted_users=user) | Q(pk=user.pk) + ) if user.is_anonymous: return self.none() return self.filter(id=user.id) diff --git a/core/tests/test_user.py b/core/tests/test_user.py index 5dd3e62f..cacd43a3 100644 --- a/core/tests/test_user.py +++ b/core/tests/test_user.py @@ -410,12 +410,20 @@ class TestUserQuerySetViewableBy: assert set(viewable) == set(users) @pytest.mark.parametrize( - "user_factory", [old_subscriber_user.make, subscriber_user.make] + "user_factory", + [ + old_subscriber_user.make, + lambda: old_subscriber_user.make(is_viewable=False), + subscriber_user.make, + lambda: subscriber_user.make(is_viewable=False), + ], ) - def test_subscriber(self, users: list[User], user_factory): + def test_can_search(self, users: list[User], user_factory): user = user_factory() - viewable = User.objects.filter(id__in=[u.id for u in users]).viewable_by(user) - assert set(viewable) == {users[0], users[1]} + viewable = User.objects.filter( + id__in=[u.id for u in [*users, user]] + ).viewable_by(user) + assert set(viewable) == {user, users[0], users[1]} def test_whitelist(self, users: list[User]): user = subscriber_user.make()