Don't broadcast imported reviews outside bookwyrm

This commit is contained in:
Mouse Reeve 2021-11-08 12:00:08 -08:00
parent 582d2e6d0d
commit e19c4620ce
2 changed files with 12 additions and 10 deletions

View file

@ -136,7 +136,7 @@ def handle_imported_book(source, user, item, include_reviews, privacy):
if item.review if item.review
else "" else ""
) )
models.Review.objects.create( review = models.Review(
user=user, user=user,
book=item.book, book=item.book,
name=review_title, name=review_title,
@ -147,10 +147,12 @@ def handle_imported_book(source, user, item, include_reviews, privacy):
) )
else: else:
# just a rating # just a rating
models.ReviewRating.objects.create( review = models.ReviewRating(
user=user, user=user,
book=item.book, book=item.book,
rating=item.rating, rating=item.rating,
published_date=published_date_guess, published_date=published_date_guess,
privacy=privacy, privacy=privacy,
) )
# only broadcast this review to other bookwyrm instances
review.save(software="bookwyrm")

View file

@ -195,7 +195,7 @@ class ActivitypubMixin:
class ObjectMixin(ActivitypubMixin): class ObjectMixin(ActivitypubMixin):
"""add this mixin for object models that are AP serializable""" """add this mixin for object models that are AP serializable"""
def save(self, *args, created=None, **kwargs): def save(self, *args, created=None, software=None, **kwargs):
"""broadcast created/updated/deleted objects as appropriate""" """broadcast created/updated/deleted objects as appropriate"""
broadcast = kwargs.get("broadcast", True) broadcast = kwargs.get("broadcast", True)
# this bonus kwarg would cause an error in the base save method # this bonus kwarg would cause an error in the base save method
@ -219,15 +219,16 @@ class ObjectMixin(ActivitypubMixin):
return return
try: try:
software = None
# do we have a "pure" activitypub version of this for mastodon? # do we have a "pure" activitypub version of this for mastodon?
if hasattr(self, "pure_content"): if not software and hasattr(self, "pure_content"):
pure_activity = self.to_create_activity(user, pure=True) pure_activity = self.to_create_activity(user, pure=True)
self.broadcast(pure_activity, user, software="other") self.broadcast(pure_activity, user, software="other")
# set bookwyrm so that that type is also sent
software = "bookwyrm" software = "bookwyrm"
# sends to BW only if we just did a pure version for masto if software == "bookwyrm":
activity = self.to_create_activity(user) # sends to BW only if we just did a pure version for masto
self.broadcast(activity, user, software=software) activity = self.to_create_activity(user)
self.broadcast(activity, user, software=software)
except AttributeError: except AttributeError:
# janky as heck, this catches the mutliple inheritence chain # janky as heck, this catches the mutliple inheritence chain
# for boosts and ignores this auxilliary broadcast # for boosts and ignores this auxilliary broadcast
@ -241,8 +242,7 @@ class ObjectMixin(ActivitypubMixin):
if isinstance(self, user_model): if isinstance(self, user_model):
user = self user = self
# book data tracks last editor # book data tracks last editor
elif hasattr(self, "last_edited_by"): user = user or getattr(self, "last_edited_by", None)
user = self.last_edited_by
# again, if we don't know the user or they're remote, don't bother # again, if we don't know the user or they're remote, don't bother
if not user or not user.local: if not user or not user.local:
return return