8 Commits

Author SHA1 Message Date
Joffrey JAFFEUX
01e36cbb47
FIX: correctly show validation errors in automation ()
A previous refactor has prevented errors to show correctly. The guilt of the issue is that we were not calling the error variable correctly in the templates.

This commit also adds a spec for this case, and removes the need for `I18n.backend.store_translations` in specs so we don't have to write too much boilerplate each time we write a spec.
2024-06-26 14:09:26 +02:00
Osama Sayegh
3be4924b99
DEV: Move array type custom fields to JSON type in automation ()
The automation plugin has 4 custom field types that are array typed. However, array typed custom fields are deprecated and should be migrated to JSON type.

This commit does a couple of things:

1. Migrate all four custom fields to JSON
2. Fix a couple of small bugs that have been discovered while migrating the custom fields to JSON (see the comments on this commit's PR for details https://github.com/discourse/discourse/pull/26939)
2024-05-10 18:47:12 +03:00
Osama Sayegh
2f2355b0ad
DEV: Convert some files to autoloading and various improvements () 2024-05-06 23:12:55 +03:00
Osama Sayegh
8ed684312f
FIX: Prevent race condition in recurring automations ()
Recurring automations are triggered by a scheduled job that runs every minute and checks for due automations, runs them and then marks as them as completed (by deleting the `PendingAutomation` record). However, the job is currently subject to a race condition where a recurring automation can be executed more than once at its due date if it takes more than a minute to finish.

This commit adds a mutex around the code that triggers the recurring automation so that no concurrent executions can happen for a single automation.

Meta topic: https://meta.discourse.org/t/daily-summary-9pm-utc/291850/119?u=osama.
2024-05-01 09:01:58 +03:00
Osama Sayegh
0e44072b2b
FIX: Prevent infinite loop of automations triggering each other ()
It's currently possible to setup multiple automation rules that trigger each other resulting in an infinite loop. To prevent that, this commit adds a global "circuit breaker" that prevents all automations from triggering while an automation rule is executing.

Internal topic: t/124365.
2024-04-30 20:13:29 +03:00
Joffrey JAFFEUX
bf715c8235
FIX: resets pending automations only if necessary ()
Prior to this fix, any change to an automation would reset `pending_automations`, now we only do it if any value related to recurrence (start_date, interval, frequency, execute_at...) has been changed.

It means that any trigger creating `pending_automations` now needs to manage them in the `on_update` callback.
2024-04-19 14:23:57 +02:00
Osama Sayegh
4733369f71
FEATURE: Add 'New users only' option to user_updated trigger ()
This commit adds a new option to the `user_updated` trigger of the automation plugin to only trigger an automation for new users that join after the automation is enabled.

Internal topic: t/125829/9.
2024-04-16 21:13:11 +03:00
Osama Sayegh
3d4faf3272
FEATURE: Merge discourse-automation ()
Automation (previously known as discourse-automation) is now a core plugin.
2024-04-03 18:20:43 +03:00