Added helper to filter queryset by privacy level
This commit is contained in:
parent
2a3f43ecb1
commit
3e277aad4f
|
@ -12,3 +12,16 @@ PRIVACY_LEVEL_CHOICES = [
|
||||||
def get_privacy_field():
|
def get_privacy_field():
|
||||||
return models.CharField(
|
return models.CharField(
|
||||||
max_length=30, choices=PRIVACY_LEVEL_CHOICES, default='instance')
|
max_length=30, choices=PRIVACY_LEVEL_CHOICES, default='instance')
|
||||||
|
|
||||||
|
|
||||||
|
def privacy_level_query(user, lookup_field='privacy_level'):
|
||||||
|
if user.is_anonymous:
|
||||||
|
return models.Q(**{
|
||||||
|
lookup_field: 'everyone',
|
||||||
|
})
|
||||||
|
|
||||||
|
return models.Q(**{
|
||||||
|
'{}__in'.format(lookup_field): [
|
||||||
|
'me', 'followers', 'instance', 'everyone'
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
from django.db.models import Q
|
||||||
|
|
||||||
|
from funkwhale_api.common import fields
|
||||||
|
from funkwhale_api.users.factories import UserFactory
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('user,expected', [
|
||||||
|
(AnonymousUser(), Q(privacy_level='everyone')),
|
||||||
|
(UserFactory.build(pk=1),
|
||||||
|
Q(privacy_level__in=['me', 'followers', 'instance', 'everyone'])),
|
||||||
|
])
|
||||||
|
def test_privacy_level_query(user,expected):
|
||||||
|
query = fields.privacy_level_query(user)
|
||||||
|
assert query == expected
|
Loading…
Reference in New Issue