mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	groups: Remove id_field_name field from GroupPermissionSetting.
id_field_name was being used only to set the initial dummy values for realm settings. We can directly add "_id" to the setting name instead of having an extra id_field_name field.
This commit is contained in:
		@@ -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**
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()),
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -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"],
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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(
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
        ),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
        ),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
        ),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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():
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user