groups: Use NamedUserGroup for all queries.

This commit is contained in:
Sahil Batra
2024-04-02 22:09:18 +05:30
committed by Tim Abbott
parent 8e9c22afdc
commit a96c8b8352
9 changed files with 22 additions and 18 deletions

View File

@@ -27,12 +27,12 @@ from zerver.lib.timestamp import floor_to_day
from zerver.lib.upload import upload_message_attachment_from_request from zerver.lib.upload import upload_message_attachment_from_request
from zerver.models import ( from zerver.models import (
Client, Client,
NamedUserGroup,
Realm, Realm,
RealmAuditLog, RealmAuditLog,
Recipient, Recipient,
Stream, Stream,
Subscription, Subscription,
UserGroup,
UserProfile, UserProfile,
) )
from zerver.models.groups import SystemGroups from zerver.models.groups import SystemGroups
@@ -114,7 +114,7 @@ class Command(BaseCommand):
force_date_joined=installation_time, force_date_joined=installation_time,
) )
administrators_user_group = UserGroup.objects.get( administrators_user_group = NamedUserGroup.objects.get(
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
) )
stream = Stream.objects.create( stream = Stream.objects.create(

View File

@@ -126,7 +126,7 @@ def set_default_for_realm_permission_group_settings(realm: Realm) -> None:
for setting_name, permission_configuration in Realm.REALM_PERMISSION_GROUP_SETTINGS.items(): for setting_name, permission_configuration in Realm.REALM_PERMISSION_GROUP_SETTINGS.items():
group_name = permission_configuration.default_group_name group_name = permission_configuration.default_group_name
setattr(realm, setting_name, system_groups_dict[group_name]) setattr(realm, setting_name, system_groups_dict[group_name].usergroup_ptr)
realm.save(update_fields=list(Realm.REALM_PERMISSION_GROUP_SETTINGS.keys())) realm.save(update_fields=list(Realm.REALM_PERMISSION_GROUP_SETTINGS.keys()))

View File

@@ -24,6 +24,7 @@ from zerver.models import (
ArchivedAttachment, ArchivedAttachment,
Attachment, Attachment,
Message, Message,
NamedUserGroup,
Realm, Realm,
RealmAuditLog, RealmAuditLog,
RealmAuthenticationMethod, RealmAuthenticationMethod,
@@ -658,7 +659,7 @@ def do_change_realm_plan_type(
# If downgrading to a plan that no longer has access to change # If downgrading to a plan that no longer has access to change
# can_access_all_users_group, set it back to the default # can_access_all_users_group, set it back to the default
# value. # value.
everyone_system_group = UserGroup.objects.get( everyone_system_group = NamedUserGroup.objects.get(
name=SystemGroups.EVERYONE, realm=realm, is_system_group=True name=SystemGroups.EVERYONE, realm=realm, is_system_group=True
) )
if realm.can_access_all_users_group_id != everyone_system_group.id: if realm.can_access_all_users_group_id != everyone_system_group.id:

View File

@@ -7,13 +7,13 @@ from zerver.lib.create_user import create_user_profile, get_display_email_addres
from zerver.lib.initial_password import initial_password from zerver.lib.initial_password import initial_password
from zerver.lib.streams import render_stream_description from zerver.lib.streams import render_stream_description
from zerver.models import ( from zerver.models import (
NamedUserGroup,
Realm, Realm,
RealmAuditLog, RealmAuditLog,
RealmUserDefault, RealmUserDefault,
Recipient, Recipient,
Stream, Stream,
Subscription, Subscription,
UserGroup,
UserGroupMembership, UserGroupMembership,
UserProfile, UserProfile,
) )
@@ -127,10 +127,10 @@ def bulk_create_users(
Subscription.objects.bulk_create(subscriptions_to_create) Subscription.objects.bulk_create(subscriptions_to_create)
full_members_system_group = UserGroup.objects.get( full_members_system_group = NamedUserGroup.objects.get(
name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True name=SystemGroups.FULL_MEMBERS, realm=realm, is_system_group=True
) )
members_system_group = UserGroup.objects.get( members_system_group = NamedUserGroup.objects.get(
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
) )
group_memberships_to_create: List[UserGroupMembership] = [] group_memberships_to_create: List[UserGroupMembership] = []
@@ -198,7 +198,7 @@ def bulk_create_streams(realm: Realm, stream_dict: Dict[str, Dict[str, Any]]) ->
existing_streams = { existing_streams = {
name.lower() for name in Stream.objects.filter(realm=realm).values_list("name", flat=True) name.lower() for name in Stream.objects.filter(realm=realm).values_list("name", flat=True)
} }
administrators_user_group = UserGroup.objects.get( administrators_user_group = NamedUserGroup.objects.get(
name=SystemGroups.ADMINISTRATORS, is_system_group=True, realm=realm name=SystemGroups.ADMINISTRATORS, is_system_group=True, realm=realm
) )
streams_to_create: List[Stream] = [] streams_to_create: List[Stream] = []

View File

@@ -194,7 +194,7 @@ def fix_upload_links(data: TableData, message_table: TableName) -> None:
def fix_streams_can_remove_subscribers_group_column(data: TableData, realm: Realm) -> None: def fix_streams_can_remove_subscribers_group_column(data: TableData, realm: Realm) -> None:
table = get_db_table(Stream) table = get_db_table(Stream)
admins_group = UserGroup.objects.get( admins_group = NamedUserGroup.objects.get(
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
) )
for stream in data[table]: for stream in data[table]:
@@ -1781,7 +1781,7 @@ def add_users_to_system_user_groups(
user_profiles: List[UserProfile], user_profiles: List[UserProfile],
role_system_groups_dict: Dict[int, NamedUserGroup], role_system_groups_dict: Dict[int, NamedUserGroup],
) -> None: ) -> None:
full_members_system_group = UserGroup.objects.get( full_members_system_group = NamedUserGroup.objects.get(
name=SystemGroups.FULL_MEMBERS, name=SystemGroups.FULL_MEMBERS,
realm=realm, realm=realm,
is_system_group=True, is_system_group=True,

View File

@@ -23,6 +23,7 @@ from zerver.lib.types import APIStreamDict
from zerver.lib.user_groups import is_user_in_group from zerver.lib.user_groups import is_user_in_group
from zerver.models import ( from zerver.models import (
DefaultStreamGroup, DefaultStreamGroup,
NamedUserGroup,
Realm, Realm,
RealmAuditLog, RealmAuditLog,
Recipient, Recipient,
@@ -142,7 +143,7 @@ def create_stream_if_needed(
) )
if can_remove_subscribers_group is None: if can_remove_subscribers_group is None:
can_remove_subscribers_group = UserGroup.objects.get( can_remove_subscribers_group = NamedUserGroup.objects.get(
name=SystemGroups.ADMINISTRATORS, is_system_group=True, realm=realm name=SystemGroups.ADMINISTRATORS, is_system_group=True, realm=realm
) )

View File

@@ -99,6 +99,7 @@ from zerver.lib.webhooks.common import (
from zerver.models import ( from zerver.models import (
Client, Client,
Message, Message,
NamedUserGroup,
PushDeviceToken, PushDeviceToken,
Reaction, Reaction,
Realm, Realm,
@@ -106,7 +107,6 @@ from zerver.models import (
Recipient, Recipient,
Stream, Stream,
Subscription, Subscription,
UserGroup,
UserGroupMembership, UserGroupMembership,
UserMessage, UserMessage,
UserProfile, UserProfile,
@@ -1364,7 +1364,7 @@ Output:
history_public_to_subscribers = get_default_value_for_history_public_to_subscribers( history_public_to_subscribers = get_default_value_for_history_public_to_subscribers(
realm, invite_only, history_public_to_subscribers realm, invite_only, history_public_to_subscribers
) )
administrators_user_group = UserGroup.objects.get( administrators_user_group = NamedUserGroup.objects.get(
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
) )
@@ -1972,7 +1972,7 @@ Output:
self.send_personal_message(shiva, polonius) self.send_personal_message(shiva, polonius)
self.send_huddle_message(aaron, [polonius, zoe]) self.send_huddle_message(aaron, [polonius, zoe])
members_group = UserGroup.objects.get(name="role:members", realm=realm) members_group = NamedUserGroup.objects.get(name="role:members", realm=realm)
do_change_realm_permission_group_setting( do_change_realm_permission_group_setting(
realm, "can_access_all_users_group", members_group, acting_user=None realm, "can_access_all_users_group", members_group, acting_user=None
) )

View File

@@ -256,7 +256,7 @@ def user_groups_in_realm_serialized(realm: Realm) -> List[UserGroupDict]:
Django's ORM doesn't properly support the left join between Django's ORM doesn't properly support the left join between
UserGroup and UserGroupMembership that we need. UserGroup and UserGroupMembership that we need.
""" """
realm_groups = UserGroup.objects.filter(realm=realm) realm_groups = NamedUserGroup.objects.filter(realm=realm)
group_dicts: Dict[int, UserGroupDict] = {} group_dicts: Dict[int, UserGroupDict] = {}
for user_group in realm_groups: for user_group in realm_groups:
group_dicts[user_group.id] = dict( group_dicts[user_group.id] = dict(
@@ -403,7 +403,9 @@ def get_recursive_subgroups_for_groups(
def get_role_based_system_groups_dict(realm: Realm) -> Dict[str, NamedUserGroup]: def get_role_based_system_groups_dict(realm: Realm) -> Dict[str, NamedUserGroup]:
system_groups = NamedUserGroup.objects.filter(realm=realm, is_system_group=True) system_groups = NamedUserGroup.objects.filter(realm=realm, is_system_group=True).select_related(
"usergroup_ptr"
)
system_groups_name_dict = {} system_groups_name_dict = {}
for group in system_groups: for group in system_groups:
system_groups_name_dict[group.name] = group system_groups_name_dict[group.name] = group

View File

@@ -90,7 +90,7 @@ from zerver.lib.validator import (
check_union, check_union,
to_non_negative_int, to_non_negative_int,
) )
from zerver.models import Realm, Stream, UserGroup, UserProfile from zerver.models import NamedUserGroup, Realm, Stream, UserProfile
from zerver.models.users import get_system_bot from zerver.models.users import get_system_bot
@@ -580,7 +580,7 @@ def add_subscriptions_backend(
can_remove_subscribers_group_default_name = Stream.stream_permission_group_settings[ can_remove_subscribers_group_default_name = Stream.stream_permission_group_settings[
"can_remove_subscribers_group" "can_remove_subscribers_group"
].default_group_name ].default_group_name
can_remove_subscribers_group = UserGroup.objects.get( can_remove_subscribers_group = NamedUserGroup.objects.get(
name=can_remove_subscribers_group_default_name, name=can_remove_subscribers_group_default_name,
realm=user_profile.realm, realm=user_profile.realm,
is_system_group=True, is_system_group=True,