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:
Sahil Batra
2024-12-03 12:45:23 +05:30
committed by Tim Abbott
parent 121df45cc4
commit 367a0bdbff
12 changed files with 18 additions and 43 deletions

View File

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

View File

@@ -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()),
});

View File

@@ -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"],
},
},

View File

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

View File

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

View File

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

View File

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

View File

@@ -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",
),
}

View File

@@ -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",
),
)

View File

@@ -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",
),
}

View File

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

View File

@@ -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():