From 1e4593b2ae89c47a6a045685d9a874e57f875449 Mon Sep 17 00:00:00 2001 From: Steve Howell Date: Mon, 27 Dec 2021 12:27:30 +0000 Subject: [PATCH] performance: Avoid Recipient lookup. We don't have to go to the database to get the Recipient fields for `user_profile.recipient`. See also 85ed6f332a86a1c34c35ce8bac0a90ce939ef0cb from a little over a year ago--it's very similar. --- zerver/lib/actions.py | 6 +++++- zerver/tests/test_example.py | 2 +- zerver/tests/test_users.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index d02500b1d5..8ac73fa2d8 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -2647,7 +2647,11 @@ def get_recipient_from_user_profiles( assert recipient_profiles_map if len(recipient_profiles_map) == 1: [user_profile] = recipient_profiles_map.values() - return user_profile.recipient + return Recipient( + id=user_profile.recipient_id, + type=Recipient.PERSONAL, + type_id=user_profile.id, + ) # Otherwise, we need a huddle. Make sure the sender is included in huddle messages recipient_profiles_map[sender.id] = sender diff --git a/zerver/tests/test_example.py b/zerver/tests/test_example.py index d67e72e8a0..fe3db5b9b2 100644 --- a/zerver/tests/test_example.py +++ b/zerver/tests/test_example.py @@ -376,7 +376,7 @@ class TestQueryCounts(ZulipTestCase): ) # The assert_length helper is another useful extra from ZulipTestCase. - self.assert_length(queries, 16) + self.assert_length(queries, 15) class TestDevelopmentEmailsLog(ZulipTestCase): diff --git a/zerver/tests/test_users.py b/zerver/tests/test_users.py index bcda1c3e81..23198d2e77 100644 --- a/zerver/tests/test_users.py +++ b/zerver/tests/test_users.py @@ -799,7 +799,7 @@ class QueryCountTest(ZulipTestCase): acting_user=None, ) - self.assert_length(queries, 85) + self.assert_length(queries, 84) self.assert_length(cache_tries, 27) peer_add_events = [event for event in events if event["event"].get("op") == "peer_add"]