diff --git a/api_docs/changelog.md b/api_docs/changelog.md index 15e44630e1..55ac589f35 100644 --- a/api_docs/changelog.md +++ b/api_docs/changelog.md @@ -25,6 +25,9 @@ format used by the Zulip server that they are interacting with. * [`POST /register`](/api/register-queue): Removed `allow_owners_group` field from configuration data object of permission settings passed in `server_supported_permission_settings`. +* [`POST /register`](/api/register-queue): Removed `id_field_name` + field from configuration data object of permission settings passed + in `server_supported_permission_settings`. **Feature level 325** diff --git a/web/src/state_data.ts b/web/src/state_data.ts index 27472b1889..3f241795a9 100644 --- a/web/src/state_data.ts +++ b/web/src/state_data.ts @@ -19,7 +19,6 @@ const group_permission_setting_schema = z.object({ allow_nobody_group: z.boolean(), allow_everyone_group: z.boolean(), default_group_name: z.string(), - id_field_name: z.string(), default_for_system_groups: z.nullable(z.string()), allowed_system_groups: z.array(z.string()), }); diff --git a/web/tests/user_groups.test.cjs b/web/tests/user_groups.test.cjs index f18e2a41eb..9d7fb1732e 100644 --- a/web/tests/user_groups.test.cjs +++ b/web/tests/user_groups.test.cjs @@ -550,7 +550,6 @@ run_test("get_realm_user_groups_for_dropdown_list_widget", ({override}) => { allow_nobody_group: true, allow_everyone_group: false, default_group_name: "stream_creator_or_nobody", - id_field_name: "can_administer_channel_group_id", allowed_system_groups: [], }, can_remove_subscribers_group: { @@ -559,7 +558,6 @@ run_test("get_realm_user_groups_for_dropdown_list_widget", ({override}) => { allow_nobody_group: false, allow_everyone_group: true, default_group_name: "role:administrators", - id_field_name: "can_remove_subscribers_group_id", allowed_system_groups: [], }, }, @@ -570,7 +568,6 @@ run_test("get_realm_user_groups_for_dropdown_list_widget", ({override}) => { allow_nobody_group: true, allow_everyone_group: false, default_group_name: "role:administrators", - id_field_name: "create_multiuse_invite_group_id", allowed_system_groups: [], }, can_access_all_users_group: { @@ -579,7 +576,6 @@ run_test("get_realm_user_groups_for_dropdown_list_widget", ({override}) => { allow_nobody_group: false, allow_everyone_group: true, default_group_name: "role:everyone", - id_field_name: "can_access_all_users_group_id", allowed_system_groups: ["role:everyone", "role:members"], }, }, diff --git a/zerver/actions/create_realm.py b/zerver/actions/create_realm.py index c977fee6d5..1086b6fafe 100644 --- a/zerver/actions/create_realm.py +++ b/zerver/actions/create_realm.py @@ -245,8 +245,8 @@ def do_create_realm( # For now a dummy value of -1 is given to groups fields which # is changed later before the transaction is committed. - for permission_configuration in Realm.REALM_PERMISSION_GROUP_SETTINGS.values(): - setattr(realm, permission_configuration.id_field_name, -1) + for setting_name in Realm.REALM_PERMISSION_GROUP_SETTINGS: + setattr(realm, setting_name + "_id", -1) realm.save() diff --git a/zerver/lib/import_realm.py b/zerver/lib/import_realm.py index 09492f913a..dfb53fa474 100644 --- a/zerver/lib/import_realm.py +++ b/zerver/lib/import_realm.py @@ -1232,8 +1232,8 @@ def do_import_realm(import_dir: Path, subdomain: str, processes: int = 1) -> Rea if "zerver_usergroup" not in data: # For now a dummy value of -1 is given to groups fields which # is changed later before the transaction is committed. - for permission_configuration in Realm.REALM_PERMISSION_GROUP_SETTINGS.values(): - setattr(realm, permission_configuration.id_field_name, -1) + for setting_name in Realm.REALM_PERMISSION_GROUP_SETTINGS: + setattr(realm, setting_name + "_id", -1) realm.save() diff --git a/zerver/lib/server_initialization.py b/zerver/lib/server_initialization.py index 1ee249453b..96bc750ff6 100644 --- a/zerver/lib/server_initialization.py +++ b/zerver/lib/server_initialization.py @@ -32,8 +32,8 @@ def create_internal_realm() -> None: # For now a dummy value of -1 is given to groups fields which # is changed later before the transaction is committed. - for permission_configuration in Realm.REALM_PERMISSION_GROUP_SETTINGS.values(): - setattr(realm, permission_configuration.id_field_name, -1) + for setting_name in Realm.REALM_PERMISSION_GROUP_SETTINGS: + setattr(realm, setting_name + "_id", -1) realm.save() RealmAuditLog.objects.create( diff --git a/zerver/lib/types.py b/zerver/lib/types.py index 73eaa63bf2..b3306ead06 100644 --- a/zerver/lib/types.py +++ b/zerver/lib/types.py @@ -314,7 +314,6 @@ class GroupPermissionSetting: allow_nobody_group: bool allow_everyone_group: bool default_group_name: str - id_field_name: str default_for_system_groups: str | None = None allowed_system_groups: list[str] = field(default_factory=list) diff --git a/zerver/models/groups.py b/zerver/models/groups.py index cd3b1b41f6..668e3bcb3c 100644 --- a/zerver/models/groups.py +++ b/zerver/models/groups.py @@ -109,7 +109,6 @@ class NamedUserGroup(UserGroup): # type: ignore[django-manager-missing] # djang allow_everyone_group=False, default_group_name="group_creator", default_for_system_groups=SystemGroups.NOBODY, - id_field_name="can_add_members_group_id", ), "can_join_group": GroupPermissionSetting( require_system_group=False, @@ -118,7 +117,6 @@ class NamedUserGroup(UserGroup): # type: ignore[django-manager-missing] # djang allow_everyone_group=False, default_group_name=SystemGroups.NOBODY, default_for_system_groups=SystemGroups.NOBODY, - id_field_name="can_join_group_id", ), "can_leave_group": GroupPermissionSetting( require_system_group=False, @@ -127,7 +125,6 @@ class NamedUserGroup(UserGroup): # type: ignore[django-manager-missing] # djang allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, default_for_system_groups=SystemGroups.NOBODY, - id_field_name="can_leave_group_id", ), "can_manage_group": GroupPermissionSetting( require_system_group=False, @@ -136,7 +133,6 @@ class NamedUserGroup(UserGroup): # type: ignore[django-manager-missing] # djang allow_everyone_group=False, default_group_name="group_creator", default_for_system_groups=SystemGroups.NOBODY, - id_field_name="can_manage_group_id", ), "can_mention_group": GroupPermissionSetting( require_system_group=False, @@ -145,7 +141,6 @@ class NamedUserGroup(UserGroup): # type: ignore[django-manager-missing] # djang allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, default_for_system_groups=SystemGroups.NOBODY, - id_field_name="can_mention_group_id", ), "can_remove_members_group": GroupPermissionSetting( require_system_group=False, @@ -154,7 +149,6 @@ class NamedUserGroup(UserGroup): # type: ignore[django-manager-missing] # djang allow_everyone_group=False, default_group_name=SystemGroups.NOBODY, default_for_system_groups=SystemGroups.NOBODY, - id_field_name="can_remove_members_group_id", ), } diff --git a/zerver/models/realms.py b/zerver/models/realms.py index efa3a19cec..941ed7e8d2 100644 --- a/zerver/models/realms.py +++ b/zerver/models/realms.py @@ -666,7 +666,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=False, default_group_name=SystemGroups.ADMINISTRATORS, - id_field_name="create_multiuse_invite_group_id", ), can_access_all_users_group=GroupPermissionSetting( require_system_group=True, @@ -674,7 +673,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, - id_field_name="can_access_all_users_group_id", allowed_system_groups=[SystemGroups.EVERYONE, SystemGroups.MEMBERS], ), can_add_custom_emoji_group=GroupPermissionSetting( @@ -683,7 +681,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=False, default_group_name=SystemGroups.MEMBERS, - id_field_name="can_add_custom_emoji_group_id", ), can_create_groups=GroupPermissionSetting( require_system_group=False, @@ -691,7 +688,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=False, default_group_name=SystemGroups.MEMBERS, - id_field_name="can_create_groups_id", ), can_create_public_channel_group=GroupPermissionSetting( require_system_group=False, @@ -699,7 +695,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=False, default_group_name=SystemGroups.MEMBERS, - id_field_name="can_create_public_channel_group_id", ), can_create_private_channel_group=GroupPermissionSetting( require_system_group=False, @@ -707,7 +702,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=False, default_group_name=SystemGroups.MEMBERS, - id_field_name="can_create_private_channel_group_id", ), can_create_web_public_channel_group=GroupPermissionSetting( require_system_group=True, @@ -715,7 +709,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=False, default_group_name=SystemGroups.OWNERS, - id_field_name="can_create_web_public_channel_group_id", allowed_system_groups=[ SystemGroups.MODERATORS, SystemGroups.ADMINISTRATORS, @@ -729,7 +722,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=False, default_group_name=SystemGroups.ADMINISTRATORS, - id_field_name="can_delete_any_message_group_id", ), can_delete_own_message_group=GroupPermissionSetting( require_system_group=False, @@ -737,7 +729,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, - id_field_name="can_delete_own_message_group_id", ), can_invite_users_group=GroupPermissionSetting( require_system_group=False, @@ -745,7 +736,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=False, default_group_name=SystemGroups.MEMBERS, - id_field_name="can_invite_users_group_id", ), can_manage_all_groups=GroupPermissionSetting( require_system_group=False, @@ -753,7 +743,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=False, allow_everyone_group=False, default_group_name=SystemGroups.OWNERS, - id_field_name="can_manage_all_groups_id", ), can_move_messages_between_channels_group=GroupPermissionSetting( require_system_group=False, @@ -761,7 +750,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=False, default_group_name=SystemGroups.MEMBERS, - id_field_name="can_move_messages_between_channels_group_id", ), can_move_messages_between_topics_group=GroupPermissionSetting( require_system_group=False, @@ -769,7 +757,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, - id_field_name="can_move_messages_between_topics_group_id", ), direct_message_initiator_group=GroupPermissionSetting( require_system_group=False, @@ -777,7 +764,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, - id_field_name="direct_message_initiator_group_id", ), direct_message_permission_group=GroupPermissionSetting( require_system_group=False, @@ -785,7 +771,6 @@ class Realm(models.Model): # type: ignore[django-manager-missing] # django-stub allow_nobody_group=True, allow_everyone_group=True, default_group_name=SystemGroups.EVERYONE, - id_field_name="direct_message_permission_group_id", ), ) diff --git a/zerver/models/streams.py b/zerver/models/streams.py index 91cf1cd548..7569f41a6f 100644 --- a/zerver/models/streams.py +++ b/zerver/models/streams.py @@ -148,7 +148,6 @@ class Stream(models.Model): allow_nobody_group=True, allow_everyone_group=False, default_group_name="stream_creator_or_nobody", - id_field_name="can_administer_channel_group_id", ), "can_remove_subscribers_group": GroupPermissionSetting( require_system_group=False, @@ -156,7 +155,6 @@ class Stream(models.Model): allow_nobody_group=False, allow_everyone_group=True, default_group_name=SystemGroups.ADMINISTRATORS, - id_field_name="can_remove_subscribers_group_id", ), } diff --git a/zerver/openapi/zulip.yaml b/zerver/openapi/zulip.yaml index f39dc967da..9daa13cf68 100644 --- a/zerver/openapi/zulip.yaml +++ b/zerver/openapi/zulip.yaml @@ -23899,8 +23899,13 @@ components: to which the setting can be set to and the default values for the setting. - **Changes**: Removed `allow_owners_group` field in Zulip 10.0 (feature level 326), - as we now support anonymous user groups. + **Changes**: Removed `allow_owners_group` field in Zulip 10.0 (feature level 326), as we now + support anonymous user groups. Previously, the `role:owners` system group was + not offered when `allow_owners_group` was false. + + Removed unnecessary `id_field_name` field in Zulip 10.0 (feature level 326). Previously, + this always had the value of `"{setting_name}_id"`; it was an internal implementation + detail of the server not intended to be included in the API. additionalProperties: false type: object properties: @@ -23927,10 +23932,6 @@ components: type: string description: | Name of the default group for the setting. - id_field_name: - type: string - description: | - Name for the field used to pass the group ID for the setting. default_for_system_groups: type: string nullable: true diff --git a/zerver/views/realm.py b/zerver/views/realm.py index 865291cdb9..4d9bfca488 100644 --- a/zerver/views/realm.py +++ b/zerver/views/realm.py @@ -344,8 +344,8 @@ def update_realm( if k in realm.property_types: req_vars[k] = v - for setting_name, permission_configuration in Realm.REALM_PERMISSION_GROUP_SETTINGS.items(): - if k in [permission_configuration.id_field_name, setting_name]: + for setting_name in Realm.REALM_PERMISSION_GROUP_SETTINGS: + if k == setting_name: req_group_setting_vars[k] = v for k, v in req_vars.items():