Streamline saves on user create

This commit is contained in:
Mouse Reeve 2021-08-03 07:43:03 -07:00
parent 62befa9295
commit ee7bdc956a
3 changed files with 16 additions and 13 deletions

View File

@ -243,7 +243,6 @@ class User(OrderedCollectionPageMixin, AbstractUser):
# generate a username that uses the domain (webfinger format) # generate a username that uses the domain (webfinger format)
actor_parts = urlparse(self.remote_id) actor_parts = urlparse(self.remote_id)
self.username = "%s@%s" % (self.username, actor_parts.netloc) self.username = "%s@%s" % (self.username, actor_parts.netloc)
super().save(*args, **kwargs)
# this user already exists, no need to populate fields # this user already exists, no need to populate fields
if not created: if not created:
@ -276,7 +275,7 @@ class User(OrderedCollectionPageMixin, AbstractUser):
self.key_pair = KeyPair.objects.create( self.key_pair = KeyPair.objects.create(
remote_id="%s/#main-key" % self.remote_id remote_id="%s/#main-key" % self.remote_id
) )
self.save(broadcast=False) self.save(broadcast=False, update_fields=["key_pair"])
shelves = [ shelves = [
{ {

View File

@ -178,12 +178,15 @@ def update_rank_on_shelving(sender, instance, *args, **kwargs):
@receiver(signals.post_save, sender=models.User) @receiver(signals.post_save, sender=models.User)
# pylint: disable=unused-argument, too-many-arguments # pylint: disable=unused-argument, too-many-arguments
def add_new_user(sender, instance, created, **kwargs): def add_new_user(sender, instance, created, update_fields=None, **kwargs):
"""a new user, wow how cool""" """a new user, wow how cool"""
# a new user is found, create suggestions for them # a new user is found, create suggestions for them
if created and instance.local: if created and instance.local:
rerank_suggestions_task.delay(instance.id) rerank_suggestions_task.delay(instance.id)
if update_fields and not "discoverable" in update_fields:
return
# this happens on every save, not just when discoverability changes, annoyingly # this happens on every save, not just when discoverability changes, annoyingly
if instance.discoverable: if instance.discoverable:
rerank_user_task.delay(instance.id, update_only=False) rerank_user_task.delay(instance.id, update_only=False)

View File

@ -11,16 +11,17 @@ class Activitystreams(TestCase):
def setUp(self): def setUp(self):
"""use a test csv""" """use a test csv"""
self.local_user = models.User.objects.create_user( with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"):
"mouse", "mouse@mouse.mouse", "password", local=True, localname="mouse" self.local_user = models.User.objects.create_user(
) "mouse", "mouse@mouse.mouse", "password", local=True, localname="mouse"
self.another_user = models.User.objects.create_user( )
"nutria", self.another_user = models.User.objects.create_user(
"nutria@nutria.nutria", "nutria",
"password", "nutria@nutria.nutria",
local=True, "password",
localname="nutria", local=True,
) localname="nutria",
)
with patch("bookwyrm.models.user.set_remote_server.delay"): with patch("bookwyrm.models.user.set_remote_server.delay"):
self.remote_user = models.User.objects.create_user( self.remote_user = models.User.objects.create_user(
"rat", "rat",