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:
Sahil Batra
2023-09-18 20:25:58 +05:30
committed by Tim Abbott
parent 08d41f9eb3
commit 2c43c2a4db
4 changed files with 27 additions and 32 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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[

View File

@@ -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