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.models import (
Client,
NamedUserGroup,
Realm,
RealmAuditLog,
Recipient,
Stream,
Subscription,
UserGroup,
UserProfile,
)
from zerver.models.groups import SystemGroups
@@ -114,7 +114,7 @@ class Command(BaseCommand):
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
)
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():
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()))

View File

@@ -24,6 +24,7 @@ from zerver.models import (
ArchivedAttachment,
Attachment,
Message,
NamedUserGroup,
Realm,
RealmAuditLog,
RealmAuthenticationMethod,
@@ -658,7 +659,7 @@ def do_change_realm_plan_type(
# If downgrading to a plan that no longer has access to change
# can_access_all_users_group, set it back to the default
# value.
everyone_system_group = UserGroup.objects.get(
everyone_system_group = NamedUserGroup.objects.get(
name=SystemGroups.EVERYONE, realm=realm, is_system_group=True
)
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.streams import render_stream_description
from zerver.models import (
NamedUserGroup,
Realm,
RealmAuditLog,
RealmUserDefault,
Recipient,
Stream,
Subscription,
UserGroup,
UserGroupMembership,
UserProfile,
)
@@ -127,10 +127,10 @@ def bulk_create_users(
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
)
members_system_group = UserGroup.objects.get(
members_system_group = NamedUserGroup.objects.get(
name=SystemGroups.MEMBERS, realm=realm, is_system_group=True
)
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 = {
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
)
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:
table = get_db_table(Stream)
admins_group = UserGroup.objects.get(
admins_group = NamedUserGroup.objects.get(
name=SystemGroups.ADMINISTRATORS, realm=realm, is_system_group=True
)
for stream in data[table]:
@@ -1781,7 +1781,7 @@ def add_users_to_system_user_groups(
user_profiles: List[UserProfile],
role_system_groups_dict: Dict[int, NamedUserGroup],
) -> None:
full_members_system_group = UserGroup.objects.get(
full_members_system_group = NamedUserGroup.objects.get(
name=SystemGroups.FULL_MEMBERS,
realm=realm,
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.models import (
DefaultStreamGroup,
NamedUserGroup,
Realm,
RealmAuditLog,
Recipient,
@@ -142,7 +143,7 @@ def create_stream_if_needed(
)
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
)

View File

@@ -99,6 +99,7 @@ from zerver.lib.webhooks.common import (
from zerver.models import (
Client,
Message,
NamedUserGroup,
PushDeviceToken,
Reaction,
Realm,
@@ -106,7 +107,6 @@ from zerver.models import (
Recipient,
Stream,
Subscription,
UserGroup,
UserGroupMembership,
UserMessage,
UserProfile,
@@ -1364,7 +1364,7 @@ Output:
history_public_to_subscribers = get_default_value_for_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
)
@@ -1972,7 +1972,7 @@ Output:
self.send_personal_message(shiva, polonius)
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(
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
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] = {}
for user_group in realm_groups:
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]:
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 = {}
for group in system_groups:
system_groups_name_dict[group.name] = group

View File

@@ -90,7 +90,7 @@ from zerver.lib.validator import (
check_union,
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
@@ -580,7 +580,7 @@ def add_subscriptions_backend(
can_remove_subscribers_group_default_name = Stream.stream_permission_group_settings[
"can_remove_subscribers_group"
].default_group_name
can_remove_subscribers_group = UserGroup.objects.get(
can_remove_subscribers_group = NamedUserGroup.objects.get(
name=can_remove_subscribers_group_default_name,
realm=user_profile.realm,
is_system_group=True,