mirror of
https://github.com/zulip/zulip.git
synced 2025-11-18 21:48:30 +00:00
bulk_access_messages: Use a bulk UserMessage query.
This removes one of the three queries that runs in a loop with this bulk access function.
This commit is contained in:
@@ -729,9 +729,15 @@ def has_message_access(
|
|||||||
def bulk_access_messages(user_profile: UserProfile, messages: Sequence[Message]) -> List[Message]:
|
def bulk_access_messages(user_profile: UserProfile, messages: Sequence[Message]) -> List[Message]:
|
||||||
filtered_messages = []
|
filtered_messages = []
|
||||||
|
|
||||||
|
user_message_set = set(
|
||||||
|
bulk_access_messages_expect_usermessage(
|
||||||
|
user_profile.id, [message.id for message in messages]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
for message in messages:
|
for message in messages:
|
||||||
user_message = get_usermessage_by_message_id(user_profile, message.id)
|
has_user_message = message.id in user_message_set
|
||||||
if has_message_access(user_profile, message, has_user_message=user_message is not None):
|
if has_message_access(user_profile, message, has_user_message=has_user_message):
|
||||||
filtered_messages.append(message)
|
filtered_messages.append(message)
|
||||||
return filtered_messages
|
return filtered_messages
|
||||||
|
|
||||||
|
|||||||
@@ -1307,7 +1307,7 @@ class MessageAccessTests(ZulipTestCase):
|
|||||||
|
|
||||||
with queries_captured() as queries:
|
with queries_captured() as queries:
|
||||||
filtered_messages = bulk_access_messages(later_subscribed_user, messages)
|
filtered_messages = bulk_access_messages(later_subscribed_user, messages)
|
||||||
self.assert_length(queries, 4)
|
self.assert_length(queries, 3)
|
||||||
|
|
||||||
# Message sent before subscribing wouldn't be accessible by later
|
# Message sent before subscribing wouldn't be accessible by later
|
||||||
# subscribed user as stream has protected history
|
# subscribed user as stream has protected history
|
||||||
@@ -1318,7 +1318,7 @@ class MessageAccessTests(ZulipTestCase):
|
|||||||
|
|
||||||
with queries_captured() as queries:
|
with queries_captured() as queries:
|
||||||
filtered_messages = bulk_access_messages(later_subscribed_user, messages)
|
filtered_messages = bulk_access_messages(later_subscribed_user, messages)
|
||||||
self.assert_length(queries, 5)
|
self.assert_length(queries, 4)
|
||||||
|
|
||||||
# Message sent before subscribing are accessible by 8user as stream
|
# Message sent before subscribing are accessible by 8user as stream
|
||||||
# don't have protected history
|
# don't have protected history
|
||||||
@@ -1329,7 +1329,7 @@ class MessageAccessTests(ZulipTestCase):
|
|||||||
|
|
||||||
with queries_captured() as queries:
|
with queries_captured() as queries:
|
||||||
filtered_messages = bulk_access_messages(unsubscribed_user, messages)
|
filtered_messages = bulk_access_messages(unsubscribed_user, messages)
|
||||||
self.assert_length(queries, 8)
|
self.assert_length(queries, 7)
|
||||||
|
|
||||||
self.assertEqual(len(filtered_messages), 0)
|
self.assertEqual(len(filtered_messages), 0)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user