mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
groups: Use realm_for_sharding for limiting NamedUserGroup queries.
For get and filter queries of NamedUserGroup, realm_for_sharding field is used instead of realm field, as directly using realm_for_sharding field on NamedUserGroup makes the query faster than using realm present on the base UserGroup table.
This commit is contained in:
@@ -156,7 +156,9 @@ class StreamSetupTest(ZulipTestCase):
|
||||
admin = self.example_user("iago")
|
||||
realm = admin.realm
|
||||
|
||||
hamletcharacters_group = NamedUserGroup.objects.get(name="hamletcharacters", realm=realm)
|
||||
hamletcharacters_group = NamedUserGroup.objects.get(
|
||||
name="hamletcharacters", realm_for_sharding=realm
|
||||
)
|
||||
test_group = check_add_user_group(realm, "test", [admin], acting_user=admin)
|
||||
user_groups = [hamletcharacters_group, test_group]
|
||||
|
||||
@@ -791,7 +793,7 @@ class InviteUserTest(InviteUserBase):
|
||||
self.assertEqual(realm.can_invite_users_group.named_user_group.name, SystemGroups.MEMBERS)
|
||||
|
||||
nobody_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.NOBODY, realm=realm, is_system_group=True
|
||||
name=SystemGroups.NOBODY, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
test_group = check_add_user_group(
|
||||
realm,
|
||||
@@ -803,7 +805,9 @@ class InviteUserTest(InviteUserBase):
|
||||
"can_add_members_group": nobody_group,
|
||||
},
|
||||
)
|
||||
hamletcharacters_group = NamedUserGroup.objects.get(name="hamletcharacters", realm=realm)
|
||||
hamletcharacters_group = NamedUserGroup.objects.get(
|
||||
name="hamletcharacters", realm_for_sharding=realm
|
||||
)
|
||||
|
||||
# Initialize settings with nobody allowed to add members or manage
|
||||
# the group.
|
||||
@@ -835,7 +839,7 @@ class InviteUserTest(InviteUserBase):
|
||||
# Test that user having permission to manage all groups can
|
||||
# add user to groups through invitation.
|
||||
owners_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.OWNERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.OWNERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm,
|
||||
@@ -857,7 +861,7 @@ class InviteUserTest(InviteUserBase):
|
||||
# Check that user does not have permission to add user to system groups
|
||||
# even when having permission to manage all groups.
|
||||
moderators_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MODERATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MODERATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
result = self.invite(invitee, [], group_ids=[moderators_group.id])
|
||||
self.assert_json_error(result, "Insufficient permission")
|
||||
@@ -1016,13 +1020,13 @@ class InviteUserTest(InviteUserBase):
|
||||
self.check_user_subscribed_only_to_streams("test1", {denmark, sandbox, verona, zulip})
|
||||
|
||||
admins_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.ADMINISTRATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
nobody_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.NOBODY, realm=realm, is_system_group=True
|
||||
name=SystemGroups.NOBODY, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
members_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
|
||||
do_change_stream_group_based_setting(
|
||||
@@ -1098,19 +1102,19 @@ class InviteUserTest(InviteUserBase):
|
||||
realm = get_realm("zulip")
|
||||
|
||||
administrators_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.ADMINISTRATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
moderators_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MODERATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MODERATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
full_members_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.FULL_MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
members_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
nobody_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.NOBODY, realm=realm, is_system_group=True
|
||||
name=SystemGroups.NOBODY, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
|
||||
do_change_realm_permission_group_setting(
|
||||
@@ -1706,10 +1710,10 @@ so we didn't send them an invitation. We did send invitations to everyone else!"
|
||||
def test_invite_without_permission_to_subscribe_others(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
members_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
admins_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.ADMINISTRATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm, "can_add_subscribers_group", admins_group, acting_user=None
|
||||
@@ -3069,7 +3073,7 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
self.login("hamlet")
|
||||
realm = get_realm("zulip")
|
||||
members_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
welcome_message_custom_text = "Welcome Bot custom message."
|
||||
realm_welcome_message_custom_text = "Realm's Welcome Bot message."
|
||||
@@ -3445,13 +3449,13 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
def test_multiuse_invite_without_permission_to_subscribe_others(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
members_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm, "create_multiuse_invite_group", members_group, acting_user=None
|
||||
)
|
||||
admins_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.ADMINISTRATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm, "can_add_subscribers_group", admins_group, acting_user=None
|
||||
@@ -3514,14 +3518,14 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
realm = hamlet.realm
|
||||
# All users except guests have permission to create multiuse invite.
|
||||
members_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm, "create_multiuse_invite_group", members_group, acting_user=None
|
||||
)
|
||||
|
||||
nobody_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.NOBODY, realm=realm, is_system_group=True
|
||||
name=SystemGroups.NOBODY, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
test_group = check_add_user_group(
|
||||
realm,
|
||||
@@ -3533,7 +3537,9 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
"can_add_members_group": nobody_group,
|
||||
},
|
||||
)
|
||||
hamletcharacters_group = NamedUserGroup.objects.get(name="hamletcharacters", realm=realm)
|
||||
hamletcharacters_group = NamedUserGroup.objects.get(
|
||||
name="hamletcharacters", realm_for_sharding=realm
|
||||
)
|
||||
|
||||
def check_create_multiuse_invite(
|
||||
user: str, group_ids: list[int], error_msg: str | None = None
|
||||
@@ -3579,7 +3585,7 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
# Test that user having permission to manage all groups can
|
||||
# add users to groups through invitation.
|
||||
owners_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.OWNERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.OWNERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm,
|
||||
@@ -3598,7 +3604,7 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
# Check that user does not have permission to add user to system groups
|
||||
# even when having permission to manage all groups.
|
||||
moderators_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.MODERATORS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.MODERATORS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
check_create_multiuse_invite("desdemona", [moderators_group.id], "Insufficient permission")
|
||||
check_create_multiuse_invite("desdemona", [test_group.id, hamletcharacters_group.id])
|
||||
@@ -3637,10 +3643,10 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
def test_create_multiuse_invite_group_setting(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
full_members_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.FULL_MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
nobody_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.NOBODY, realm=realm, is_system_group=True
|
||||
name=SystemGroups.NOBODY, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
|
||||
# Default value of create_multiuse_invite_group is administrators
|
||||
@@ -3672,7 +3678,7 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
def test_only_owner_can_change_create_multiuse_invite_group(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
full_members_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.FULL_MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
|
||||
self.login("iago")
|
||||
@@ -3743,7 +3749,7 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
def test_multiuse_link_for_inviting_as_admin(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
full_members_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.FULL_MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
|
||||
do_change_realm_permission_group_setting(
|
||||
@@ -3774,7 +3780,7 @@ class MultiuseInviteTest(ZulipTestCase):
|
||||
def test_multiuse_link_for_inviting_as_moderator(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
full_members_system_group = NamedUserGroup.objects.get(
|
||||
name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True
|
||||
name=SystemGroups.FULL_MEMBERS, realm_for_sharding=realm, is_system_group=True
|
||||
)
|
||||
|
||||
do_change_realm_permission_group_setting(
|
||||
|
||||
Reference in New Issue
Block a user