From b80833c4b88d38b99f07f0b041bc7a5db4a8888f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20R=2E=20Sede=C3=B1o?= Date: Sat, 13 Apr 2024 10:09:02 -0400 Subject: [PATCH] Some minor database optimizaions when receiving messages --- roost_backend/signals.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/roost_backend/signals.py b/roost_backend/signals.py index 0a316b0..89f27b3 100644 --- a/roost_backend/signals.py +++ b/roost_backend/signals.py @@ -12,18 +12,19 @@ def message_post_processing(sender, instance, created, **_kwargs): # pylint: disable=unused-argument if not created: return + user_qs = models.User.objects.distinct().only('id', 'principal') users = [] if instance.is_personal: if instance.is_outgoing: - users.append(models.User.objects.get(principal=instance.sender)) + users.append(user_qs.get(principal=instance.sender)) else: - users.append(models.User.objects.get(principal=instance.recipient)) + users.append(user_qs.get(principal=instance.recipient)) elif not instance.is_outgoing: - users.extend(sub.user for sub in - models.Subscription.objects.filter( - class_key=instance.class_key, - instance_key__in=(instance.instance_key, '*'), - zrecipient=instance.recipient)) + users.extend(user_qs.filter( + subscription__in=models.Subscription.objects.filter( + class_key=instance.class_key, + instance_key__in=(instance.instance_key, '*'), + zrecipient=instance.recipient))) if users: instance.users.add(*users)