mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
user_groups: Pass config object to access_user_group_for_setting.
We now pass the complete configuration object for a setting to access_user_group_for_setting instead of passing the configuration object's fields as different variables.
This commit is contained in:
@@ -10,6 +10,7 @@ from django_cte import With
|
||||
from django_stubs_ext import ValuesQuerySet
|
||||
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
from zerver.lib.types import GroupPermissionSetting
|
||||
from zerver.models import (
|
||||
GroupGroupMembership,
|
||||
Realm,
|
||||
@@ -169,41 +170,49 @@ def access_user_group_for_setting(
|
||||
user_profile: UserProfile,
|
||||
*,
|
||||
setting_name: str,
|
||||
require_system_group: bool = False,
|
||||
allow_internet_group: bool = False,
|
||||
allow_owners_group: bool = False,
|
||||
allow_nobody_group: bool = True,
|
||||
allow_everyone_group: bool = True,
|
||||
permission_configuration: GroupPermissionSetting,
|
||||
) -> UserGroup:
|
||||
user_group = access_user_group_by_id(user_group_id, user_profile, for_read=True)
|
||||
|
||||
if require_system_group and not user_group.is_system_group:
|
||||
if permission_configuration.require_system_group and not user_group.is_system_group:
|
||||
raise JsonableError(
|
||||
_("'{setting_name}' must be a system user group.").format(setting_name=setting_name)
|
||||
)
|
||||
|
||||
if not allow_internet_group and user_group.name == UserGroup.EVERYONE_ON_INTERNET_GROUP_NAME:
|
||||
if (
|
||||
not permission_configuration.allow_internet_group
|
||||
and user_group.name == UserGroup.EVERYONE_ON_INTERNET_GROUP_NAME
|
||||
):
|
||||
raise JsonableError(
|
||||
_("'{setting_name}' setting cannot be set to 'role:internet' group.").format(
|
||||
setting_name=setting_name
|
||||
)
|
||||
)
|
||||
|
||||
if not allow_owners_group and user_group.name == UserGroup.OWNERS_GROUP_NAME:
|
||||
if (
|
||||
not permission_configuration.allow_owners_group
|
||||
and user_group.name == UserGroup.OWNERS_GROUP_NAME
|
||||
):
|
||||
raise JsonableError(
|
||||
_("'{setting_name}' setting cannot be set to 'role:owners' group.").format(
|
||||
setting_name=setting_name
|
||||
)
|
||||
)
|
||||
|
||||
if not allow_nobody_group and user_group.name == UserGroup.NOBODY_GROUP_NAME:
|
||||
if (
|
||||
not permission_configuration.allow_nobody_group
|
||||
and user_group.name == UserGroup.NOBODY_GROUP_NAME
|
||||
):
|
||||
raise JsonableError(
|
||||
_("'{setting_name}' setting cannot be set to 'role:nobody' group.").format(
|
||||
setting_name=setting_name
|
||||
)
|
||||
)
|
||||
|
||||
if not allow_everyone_group and user_group.name == UserGroup.EVERYONE_GROUP_NAME:
|
||||
if (
|
||||
not permission_configuration.allow_everyone_group
|
||||
and user_group.name == UserGroup.EVERYONE_GROUP_NAME
|
||||
):
|
||||
raise JsonableError(
|
||||
_("'{setting_name}' setting cannot be set to 'role:everyone' group.").format(
|
||||
setting_name=setting_name
|
||||
|
||||
@@ -355,11 +355,7 @@ def update_realm(
|
||||
user_group_id,
|
||||
user_profile,
|
||||
setting_name=setting_name,
|
||||
require_system_group=permission_configuration.require_system_group,
|
||||
allow_internet_group=permission_configuration.allow_internet_group,
|
||||
allow_owners_group=permission_configuration.allow_owners_group,
|
||||
allow_nobody_group=permission_configuration.allow_nobody_group,
|
||||
allow_everyone_group=permission_configuration.allow_everyone_group,
|
||||
permission_configuration=permission_configuration,
|
||||
)
|
||||
do_change_realm_permission_group_setting(
|
||||
realm, setting_name, user_group, acting_user=user_profile
|
||||
|
||||
@@ -394,11 +394,7 @@ def update_stream_backend(
|
||||
user_group_id,
|
||||
user_profile,
|
||||
setting_name=setting_name,
|
||||
require_system_group=permission_configuration.require_system_group,
|
||||
allow_internet_group=permission_configuration.allow_internet_group,
|
||||
allow_owners_group=permission_configuration.allow_owners_group,
|
||||
allow_nobody_group=permission_configuration.allow_nobody_group,
|
||||
allow_everyone_group=permission_configuration.allow_everyone_group,
|
||||
permission_configuration=permission_configuration,
|
||||
)
|
||||
do_change_stream_group_based_setting(
|
||||
stream, setting_name, user_group, acting_user=user_profile
|
||||
@@ -578,12 +574,14 @@ def add_subscriptions_backend(
|
||||
color_map = {}
|
||||
|
||||
if can_remove_subscribers_group_id is not None:
|
||||
permission_configuration = Stream.stream_permission_group_settings[
|
||||
"can_remove_subscribers_group"
|
||||
]
|
||||
can_remove_subscribers_group = access_user_group_for_setting(
|
||||
can_remove_subscribers_group_id,
|
||||
user_profile,
|
||||
setting_name="can_remove_subscribers_group",
|
||||
require_system_group=True,
|
||||
allow_nobody_group=False,
|
||||
permission_configuration=permission_configuration,
|
||||
)
|
||||
else:
|
||||
can_remove_subscribers_group_default_name = Stream.stream_permission_group_settings[
|
||||
|
||||
@@ -70,11 +70,7 @@ def add_user_group(
|
||||
setting_value_group_id,
|
||||
user_profile,
|
||||
setting_name=setting_name,
|
||||
require_system_group=permission_config.require_system_group,
|
||||
allow_internet_group=permission_config.allow_internet_group,
|
||||
allow_owners_group=permission_config.allow_owners_group,
|
||||
allow_nobody_group=permission_config.allow_nobody_group,
|
||||
allow_everyone_group=permission_config.allow_everyone_group,
|
||||
permission_configuration=permission_config,
|
||||
)
|
||||
group_settings_map[setting_name] = setting_value_group
|
||||
|
||||
@@ -136,11 +132,7 @@ def edit_user_group(
|
||||
setting_value_group_id,
|
||||
user_profile,
|
||||
setting_name=setting_name,
|
||||
require_system_group=permission_config.require_system_group,
|
||||
allow_internet_group=permission_config.allow_internet_group,
|
||||
allow_owners_group=permission_config.allow_owners_group,
|
||||
allow_nobody_group=permission_config.allow_nobody_group,
|
||||
allow_everyone_group=permission_config.allow_everyone_group,
|
||||
permission_configuration=permission_config,
|
||||
)
|
||||
do_change_user_group_permission_setting(
|
||||
user_group, setting_name, setting_value_group, acting_user=user_profile
|
||||
|
||||
Reference in New Issue
Block a user