From 7f85d045dbbdf80b26612b4bbf2c22aa3ebcd1e4 Mon Sep 17 00:00:00 2001 From: Shubham Padia Date: Thu, 20 Mar 2025 10:31:36 +0000 Subject: [PATCH] streams: Add get_metadata_access_streams_via_group_ids. (cherry picked from commit b62d51f0ae0f0ba838d013b02d9e0cb4b384a4eb) --- zerver/lib/streams.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/zerver/lib/streams.py b/zerver/lib/streams.py index d618bd88f5..a8c6c22fb7 100644 --- a/zerver/lib/streams.py +++ b/zerver/lib/streams.py @@ -1798,3 +1798,19 @@ def send_stream_deletion_event( stream_ids=[stream.id for stream in streams], ) send_event_on_commit(realm, stream_deletion_event, user_ids) + + +def get_metadata_access_streams_via_group_ids( + group_ids: list[int], realm: Realm +) -> QuerySet[Stream]: + """ + Given a list of group ids, we will return streams that contains + those group ids as a value for one of the group permission settings + that can grant metadata access. + """ + return Stream.objects.filter( + Q(can_add_subscribers_group_id__in=group_ids) + | Q(can_administer_channel_group_id__in=group_ids) + | Q(can_subscribe_group_id__in=group_ids), + realm_id=realm.id, + )