Hide content from blocked users
This commit is contained in:
parent
cc8888dea2
commit
6cc29a6cf8
|
@ -248,3 +248,63 @@ class ViewsHelpers(TestCase):
|
||||||
views.helpers.handle_reading_status(
|
views.helpers.handle_reading_status(
|
||||||
self.local_user, self.shelf, self.book, 'public')
|
self.local_user, self.shelf, self.book, 'public')
|
||||||
self.assertFalse(models.GeneratedNote.objects.exists())
|
self.assertFalse(models.GeneratedNote.objects.exists())
|
||||||
|
|
||||||
|
def test_object_visible_to_user(self):
|
||||||
|
''' does a user have permission to view an object '''
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='public')
|
||||||
|
self.assertTrue(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Shelf.objects.create(
|
||||||
|
name='test', user=self.remote_user, privacy='unlisted')
|
||||||
|
self.assertTrue(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='followers')
|
||||||
|
self.assertFalse(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='direct')
|
||||||
|
self.assertFalse(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='direct')
|
||||||
|
obj.mention_users.add(self.local_user)
|
||||||
|
self.assertTrue(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
def test_object_visible_to_user_follower(self):
|
||||||
|
''' what you can see if you follow a user '''
|
||||||
|
self.remote_user.followers.add(self.local_user)
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='followers')
|
||||||
|
self.assertTrue(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='direct')
|
||||||
|
self.assertFalse(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='direct')
|
||||||
|
obj.mention_users.add(self.local_user)
|
||||||
|
self.assertTrue(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
def test_object_visible_to_user_blocked(self):
|
||||||
|
''' you can't see it if they block you '''
|
||||||
|
self.remote_user.blocks.add(self.local_user)
|
||||||
|
obj = models.Status.objects.create(
|
||||||
|
content='hi', user=self.remote_user, privacy='public')
|
||||||
|
self.assertFalse(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
||||||
|
obj = models.Shelf.objects.create(
|
||||||
|
name='test', user=self.remote_user, privacy='unlisted')
|
||||||
|
self.assertFalse(
|
||||||
|
views.helpers.object_visible_to_user(self.local_user, obj))
|
||||||
|
|
|
@ -38,11 +38,21 @@ def object_visible_to_user(viewer, obj):
|
||||||
''' is a user authorized to view an object? '''
|
''' is a user authorized to view an object? '''
|
||||||
if not obj:
|
if not obj:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# viewer can't see it if the object's owner blocked them
|
||||||
|
if viewer in obj.user.blocks.all():
|
||||||
|
return False
|
||||||
|
|
||||||
|
# you can see your own posts and any public or unlisted posts
|
||||||
if viewer == obj.user or obj.privacy in ['public', 'unlisted']:
|
if viewer == obj.user or obj.privacy in ['public', 'unlisted']:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# you can see the followers only posts of people you follow
|
||||||
if obj.privacy == 'followers' and \
|
if obj.privacy == 'followers' and \
|
||||||
obj.user.followers.filter(id=viewer.id).first():
|
obj.user.followers.filter(id=viewer.id).first():
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# you can see dms you are tagged in
|
||||||
if isinstance(obj, models.Status):
|
if isinstance(obj, models.Status):
|
||||||
if obj.privacy == 'direct' and \
|
if obj.privacy == 'direct' and \
|
||||||
obj.mention_users.filter(id=viewer.id).first():
|
obj.mention_users.filter(id=viewer.id).first():
|
||||||
|
|
Loading…
Reference in New Issue