diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py index 082294c0e..c8a508117 100644 --- a/bookwyrm/models/relationship.py +++ b/bookwyrm/models/relationship.py @@ -4,6 +4,7 @@ from django.db import models, transaction, IntegrityError from django.db.models import Q from bookwyrm import activitypub +from bookwyrm.tasks import HIGH from .activitypub_mixin import ActivitypubMixin, ActivityMixin from .activitypub_mixin import generate_activity from .base_model import BookWyrmModel @@ -139,8 +140,9 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship): ) super().save(*args, **kwargs) + # a local user is following a remote user if broadcast and self.user_subject.local and not self.user_object.local: - self.broadcast(self.to_activity(), self.user_subject) + self.broadcast(self.to_activity(), self.user_subject, queue=HIGH) if self.user_object.local: manually_approves = self.user_object.manually_approves_followers @@ -157,13 +159,14 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship): def accept(self, broadcast_only=False): """turn this request into the real deal""" user = self.user_object + # broadcast when accepting a remote request if not self.user_subject.local: activity = activitypub.Accept( id=self.get_accept_reject_id(status="accepts"), actor=self.user_object.remote_id, object=self.to_activity(), ).serialize() - self.broadcast(activity, user) + self.broadcast(activity, user, queue=HIGH) if broadcast_only: return @@ -180,7 +183,7 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship): actor=self.user_object.remote_id, object=self.to_activity(), ).serialize() - self.broadcast(activity, self.user_object) + self.broadcast(activity, self.user_object, queue=HIGH) self.delete() diff --git a/bookwyrm/models/shelf.py b/bookwyrm/models/shelf.py index d955e8d07..026571f62 100644 --- a/bookwyrm/models/shelf.py +++ b/bookwyrm/models/shelf.py @@ -7,6 +7,7 @@ from django.utils import timezone from bookwyrm import activitypub from bookwyrm.settings import DOMAIN +from bookwyrm.tasks import LOW from .activitypub_mixin import CollectionItemMixin, OrderedCollectionMixin from .base_model import BookWyrmModel from . import fields @@ -39,9 +40,9 @@ class Shelf(OrderedCollectionMixin, BookWyrmModel): activity_serializer = activitypub.Shelf - def save(self, *args, **kwargs): + def save(self, *args, priority=LOW, **kwargs): """set the identifier""" - super().save(*args, **kwargs) + super().save(*args, priority=priority, **kwargs) if not self.identifier: self.identifier = self.get_identifier() super().save(*args, **kwargs, broadcast=False) @@ -99,7 +100,7 @@ class ShelfBook(CollectionItemMixin, BookWyrmModel): activity_serializer = activitypub.ShelfItem collection_field = "shelf" - def save(self, *args, **kwargs): + def save(self, *args, priority=LOW, **kwargs): if not self.user: self.user = self.shelf.user if self.id and self.user.local: @@ -110,7 +111,7 @@ class ShelfBook(CollectionItemMixin, BookWyrmModel): for book in self.book.parent_work.editions.all() ] ) - super().save(*args, **kwargs) + super().save(*args, priority=priority, **kwargs) def delete(self, *args, **kwargs): if self.id and self.user.local: