mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +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 django_stubs_ext import ValuesQuerySet
|
||||||
|
|
||||||
from zerver.lib.exceptions import JsonableError
|
from zerver.lib.exceptions import JsonableError
|
||||||
|
from zerver.lib.types import GroupPermissionSetting
|
||||||
from zerver.models import (
|
from zerver.models import (
|
||||||
GroupGroupMembership,
|
GroupGroupMembership,
|
||||||
Realm,
|
Realm,
|
||||||
@@ -169,41 +170,49 @@ def access_user_group_for_setting(
|
|||||||
user_profile: UserProfile,
|
user_profile: UserProfile,
|
||||||
*,
|
*,
|
||||||
setting_name: str,
|
setting_name: str,
|
||||||
require_system_group: bool = False,
|
permission_configuration: GroupPermissionSetting,
|
||||||
allow_internet_group: bool = False,
|
|
||||||
allow_owners_group: bool = False,
|
|
||||||
allow_nobody_group: bool = True,
|
|
||||||
allow_everyone_group: bool = True,
|
|
||||||
) -> UserGroup:
|
) -> UserGroup:
|
||||||
user_group = access_user_group_by_id(user_group_id, user_profile, for_read=True)
|
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(
|
raise JsonableError(
|
||||||
_("'{setting_name}' must be a system user group.").format(setting_name=setting_name)
|
_("'{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(
|
raise JsonableError(
|
||||||
_("'{setting_name}' setting cannot be set to 'role:internet' group.").format(
|
_("'{setting_name}' setting cannot be set to 'role:internet' group.").format(
|
||||||
setting_name=setting_name
|
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(
|
raise JsonableError(
|
||||||
_("'{setting_name}' setting cannot be set to 'role:owners' group.").format(
|
_("'{setting_name}' setting cannot be set to 'role:owners' group.").format(
|
||||||
setting_name=setting_name
|
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(
|
raise JsonableError(
|
||||||
_("'{setting_name}' setting cannot be set to 'role:nobody' group.").format(
|
_("'{setting_name}' setting cannot be set to 'role:nobody' group.").format(
|
||||||
setting_name=setting_name
|
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(
|
raise JsonableError(
|
||||||
_("'{setting_name}' setting cannot be set to 'role:everyone' group.").format(
|
_("'{setting_name}' setting cannot be set to 'role:everyone' group.").format(
|
||||||
setting_name=setting_name
|
setting_name=setting_name
|
||||||
|
|||||||
@@ -355,11 +355,7 @@ def update_realm(
|
|||||||
user_group_id,
|
user_group_id,
|
||||||
user_profile,
|
user_profile,
|
||||||
setting_name=setting_name,
|
setting_name=setting_name,
|
||||||
require_system_group=permission_configuration.require_system_group,
|
permission_configuration=permission_configuration,
|
||||||
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,
|
|
||||||
)
|
)
|
||||||
do_change_realm_permission_group_setting(
|
do_change_realm_permission_group_setting(
|
||||||
realm, setting_name, user_group, acting_user=user_profile
|
realm, setting_name, user_group, acting_user=user_profile
|
||||||
|
|||||||
@@ -394,11 +394,7 @@ def update_stream_backend(
|
|||||||
user_group_id,
|
user_group_id,
|
||||||
user_profile,
|
user_profile,
|
||||||
setting_name=setting_name,
|
setting_name=setting_name,
|
||||||
require_system_group=permission_configuration.require_system_group,
|
permission_configuration=permission_configuration,
|
||||||
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,
|
|
||||||
)
|
)
|
||||||
do_change_stream_group_based_setting(
|
do_change_stream_group_based_setting(
|
||||||
stream, setting_name, user_group, acting_user=user_profile
|
stream, setting_name, user_group, acting_user=user_profile
|
||||||
@@ -578,12 +574,14 @@ def add_subscriptions_backend(
|
|||||||
color_map = {}
|
color_map = {}
|
||||||
|
|
||||||
if can_remove_subscribers_group_id is not None:
|
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 = access_user_group_for_setting(
|
||||||
can_remove_subscribers_group_id,
|
can_remove_subscribers_group_id,
|
||||||
user_profile,
|
user_profile,
|
||||||
setting_name="can_remove_subscribers_group",
|
setting_name="can_remove_subscribers_group",
|
||||||
require_system_group=True,
|
permission_configuration=permission_configuration,
|
||||||
allow_nobody_group=False,
|
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
can_remove_subscribers_group_default_name = Stream.stream_permission_group_settings[
|
can_remove_subscribers_group_default_name = Stream.stream_permission_group_settings[
|
||||||
|
|||||||
@@ -70,11 +70,7 @@ def add_user_group(
|
|||||||
setting_value_group_id,
|
setting_value_group_id,
|
||||||
user_profile,
|
user_profile,
|
||||||
setting_name=setting_name,
|
setting_name=setting_name,
|
||||||
require_system_group=permission_config.require_system_group,
|
permission_configuration=permission_config,
|
||||||
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,
|
|
||||||
)
|
)
|
||||||
group_settings_map[setting_name] = setting_value_group
|
group_settings_map[setting_name] = setting_value_group
|
||||||
|
|
||||||
@@ -136,11 +132,7 @@ def edit_user_group(
|
|||||||
setting_value_group_id,
|
setting_value_group_id,
|
||||||
user_profile,
|
user_profile,
|
||||||
setting_name=setting_name,
|
setting_name=setting_name,
|
||||||
require_system_group=permission_config.require_system_group,
|
permission_configuration=permission_config,
|
||||||
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,
|
|
||||||
)
|
)
|
||||||
do_change_user_group_permission_setting(
|
do_change_user_group_permission_setting(
|
||||||
user_group, setting_name, setting_value_group, acting_user=user_profile
|
user_group, setting_name, setting_value_group, acting_user=user_profile
|
||||||
|
|||||||
Reference in New Issue
Block a user