diff --git a/bookwyrm/models/activitypub_mixin.py b/bookwyrm/models/activitypub_mixin.py index 55e4971e..de440e42 100644 --- a/bookwyrm/models/activitypub_mixin.py +++ b/bookwyrm/models/activitypub_mixin.py @@ -121,10 +121,11 @@ class ActivitypubMixin: # or maybe the thing itself is a user user = self # find anyone who's tagged in a status, for example - mentions = self.mention_users if hasattr(self, 'mention_users') else [] + mentions = self.mention_users.all() if \ + hasattr(self, 'mention_users') else [] # we always send activities to explicitly mentioned users' inboxes - recipients = [u.inbox for u in mentions.all() or []] + recipients = [u.inbox for u in mentions or []] # unless it's a dm, all the followers should receive the activity if privacy != 'direct': diff --git a/bookwyrm/tests/models/test_activitypub_mixin.py b/bookwyrm/tests/models/test_activitypub_mixin.py index 36e1fcad..ba6c1489 100644 --- a/bookwyrm/tests/models/test_activitypub_mixin.py +++ b/bookwyrm/tests/models/test_activitypub_mixin.py @@ -88,6 +88,14 @@ class ActivitypubMixins(TestCase): self.assertEqual(result, book) + def test_get_recipients(self): + ''' determines the recipients for a broadcast ''' + MockSelf = namedtuple('Self', ('privacy')) + mock_self = MockSelf('public') + ActivitypubMixin.get_recipients(mock_self) + + + # ObjectMixin def test_to_create_activity(self): ''' wrapper for ActivityPub "create" action '''