From 9176a2b9eeb1afb367d6f4762fe500220e47699f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 15 Apr 2021 15:51:49 -0700 Subject: [PATCH 1/2] Fixes bug that causes recusive broadcasts --- bookwyrm/models/activitypub_mixin.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bookwyrm/models/activitypub_mixin.py b/bookwyrm/models/activitypub_mixin.py index 719debff..c6ba249c 100644 --- a/bookwyrm/models/activitypub_mixin.py +++ b/bookwyrm/models/activitypub_mixin.py @@ -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): From 25b82fd2b042eebc4f959a06f93f8addf71fbcbf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 15 Apr 2021 16:09:59 -0700 Subject: [PATCH 2/2] Updates test --- bookwyrm/tests/models/test_list.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/models/test_list.py b/bookwyrm/tests/models/test_list.py index 48f918a0..d99e5465 100644 --- a/bookwyrm/tests/models/test_list.py +++ b/bookwyrm/tests/models/test_list.py @@ -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, [])