Merge pull request #942 from bookwyrm-social/stop-broadcasting-yourself

Fixes bug that causes recursive broadcasts
This commit is contained in:
Mouse Reeve 2021-04-15 16:24:42 -07:00 committed by GitHub
commit 880e28bac8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 2 deletions

View file

@ -359,6 +359,10 @@ class CollectionItemMixin(ActivitypubMixin):
activity_serializer = activitypub.CollectionItem
def broadcast(self, activity, sender, software="bookwyrm"):
""" only send book collection updates to other bookwyrm instances """
super().broadcast(activity, sender, software=software)
@property
def privacy(self):
""" inherit the privacy of the list, or direct if pending """
@ -371,6 +375,9 @@ class CollectionItemMixin(ActivitypubMixin):
def recipients(self):
""" the owner of the list is a direct recipient """
collection_field = getattr(self, self.collection_field)
if collection_field.user.local:
# don't broadcast to yourself
return []
return [collection_field.user]
def save(self, *args, broadcast=True, **kwargs):

View file

@ -55,7 +55,7 @@ class List(TestCase):
self.assertTrue(item.approved)
self.assertEqual(item.privacy, "unlisted")
self.assertEqual(item.recipients, [self.local_user])
self.assertEqual(item.recipients, [])
def test_list_item_pending(self, _):
""" a list entry """
@ -71,4 +71,4 @@ class List(TestCase):
self.assertFalse(item.approved)
self.assertEqual(item.book_list.privacy, "public")
self.assertEqual(item.privacy, "direct")
self.assertEqual(item.recipients, [self.local_user])
self.assertEqual(item.recipients, [])