streams: Add group based setting to control posting permissions.

This commit is contained in:
Sahil Batra
2024-12-09 17:16:19 +05:30
committed by Tim Abbott
parent 3aa2671679
commit 101e94b052
15 changed files with 255 additions and 4 deletions

View File

@@ -78,6 +78,7 @@ class StreamDict(TypedDict, total=False):
history_public_to_subscribers: bool | None
message_retention_days: int | None
can_administer_channel_group: UserGroup | None
can_send_message_group: UserGroup | None
can_remove_subscribers_group: UserGroup | None
@@ -186,6 +187,7 @@ def create_stream_if_needed(
stream_description: str = "",
message_retention_days: int | None = None,
can_administer_channel_group: UserGroup | None = None,
can_send_message_group: UserGroup | None = None,
can_remove_subscribers_group: UserGroup | None = None,
acting_user: UserProfile | None = None,
setting_groups_dict: dict[int, int | AnonymousSettingGroupDict] | None = None,
@@ -291,6 +293,7 @@ def create_streams_if_needed(
stream_description=stream_dict.get("description", ""),
message_retention_days=stream_dict.get("message_retention_days", None),
can_administer_channel_group=stream_dict.get("can_administer_channel_group", None),
can_send_message_group=stream_dict.get("can_send_message_group", None),
can_remove_subscribers_group=stream_dict.get("can_remove_subscribers_group", None),
acting_user=acting_user,
setting_groups_dict=setting_groups_dict,
@@ -982,11 +985,13 @@ def stream_to_dict(
if setting_groups_dict is not None:
can_administer_channel_group = setting_groups_dict[stream.can_administer_channel_group_id]
can_send_message_group = setting_groups_dict[stream.can_send_message_group_id]
can_remove_subscribers_group = setting_groups_dict[stream.can_remove_subscribers_group_id]
else:
can_administer_channel_group = get_group_setting_value_for_api(
stream.can_administer_channel_group
)
can_send_message_group = get_group_setting_value_for_api(stream.can_send_message_group)
can_remove_subscribers_group = get_group_setting_value_for_api(
stream.can_remove_subscribers_group
)
@@ -994,6 +999,7 @@ def stream_to_dict(
return APIStreamDict(
is_archived=stream.deactivated,
can_administer_channel_group=can_administer_channel_group,
can_send_message_group=can_send_message_group,
can_remove_subscribers_group=can_remove_subscribers_group,
creator_id=stream.creator_id,
date_created=datetime_to_timestamp(stream.date_created),