mirror of
https://github.com/ae-utbm/sith.git
synced 2026-04-20 18:28:22 +00:00
Fix hidden user can't search itself
This commit is contained in:
@@ -131,7 +131,9 @@ class UserQuerySet(models.QuerySet):
|
|||||||
if user.has_perm("core.view_hidden_user"):
|
if user.has_perm("core.view_hidden_user"):
|
||||||
return self
|
return self
|
||||||
if user.has_perm("core.view_user"):
|
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:
|
if user.is_anonymous:
|
||||||
return self.none()
|
return self.none()
|
||||||
return self.filter(id=user.id)
|
return self.filter(id=user.id)
|
||||||
|
|||||||
@@ -410,12 +410,20 @@ class TestUserQuerySetViewableBy:
|
|||||||
assert set(viewable) == set(users)
|
assert set(viewable) == set(users)
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@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()
|
user = user_factory()
|
||||||
viewable = User.objects.filter(id__in=[u.id for u in users]).viewable_by(user)
|
viewable = User.objects.filter(
|
||||||
assert set(viewable) == {users[0], users[1]}
|
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]):
|
def test_whitelist(self, users: list[User]):
|
||||||
user = subscriber_user.make()
|
user = subscriber_user.make()
|
||||||
|
|||||||
Reference in New Issue
Block a user