FIX: supports groups field in post_created_edited (#28773)

To achieve this this commit does the following:
- create a new `groups field, ideally we would have reused the existing group field, but many automations now have the expectation that this field will return a group id and not an array of group ids, which makes it a dangerous change
- alter the code in `post_created_edited` to use this new groups field and change the logic to use an array
- migrate the existing group fields post_created_edited automations to change name from `restricted_group` to `restricted_groups`, the component from `group` to `groups` and the metadata from `{"value": integer}` to `{"value": [integer]}`
This commit is contained in:
Joffrey JAFFEUX
2024-09-06 15:04:19 +02:00
committed by GitHub
parent d642020b0f
commit eb3a1c7217
9 changed files with 201 additions and 22 deletions

View File

@ -54,15 +54,15 @@ module DiscourseAutomation
next if (restricted_tags["value"] & topic.tags.map(&:name)).empty?
end
restricted_group_id = automation.trigger_field("restricted_group")["value"]
if restricted_group_id.present?
restricted_group_ids = automation.trigger_field("restricted_groups")["value"]
if restricted_group_ids.present?
next if !topic.private_message?
target_group_ids = topic.allowed_groups.pluck(:id)
next if restricted_group_id != target_group_ids.first
next if (restricted_group_ids & target_group_ids).empty?
ignore_group_members = automation.trigger_field("ignore_group_members")
next if ignore_group_members["value"] && post.user.in_any_groups?([restricted_group_id])
ignore_group_members = automation.trigger_field("ignore_group_members")["value"]
next if ignore_group_members && post.user.in_any_groups?(restricted_group_ids)
end
ignore_automated = automation.trigger_field("ignore_automated")

View File

@ -14,7 +14,7 @@ DiscourseAutomation::Triggerable.add(DiscourseAutomation::Triggers::POST_CREATED
}
field :restricted_category, component: :category
field :restricted_tags, component: :tags
field :restricted_group, component: :group
field :restricted_groups, component: :groups
field :ignore_automated, component: :boolean
field :ignore_group_members, component: :boolean
field :valid_trust_levels, component: :"trust-levels"