Render Action Data as Jinja2

This commit is contained in:
renatoalmeidaoliveira 2024-02-06 11:47:38 +00:00
parent b408beaed5
commit 4de5046109
2 changed files with 19 additions and 1 deletions

View File

@ -119,13 +119,22 @@ def process_event_rules(event_rules, model_name, event, data, username=None, sna
script_name = event_rule.action_parameters['script_name'] script_name = event_rule.action_parameters['script_name']
script = script_module.scripts[script_name]() script = script_module.scripts[script_name]()
context = {
'event': event,
'timestamp': timezone.now().isoformat(),
'model': model_name,
'username': username,
'request_id': request_id,
'model': data,
}
# Enqueue a Job to record the script's execution # Enqueue a Job to record the script's execution
Job.enqueue( Job.enqueue(
"extras.scripts.run_script", "extras.scripts.run_script",
instance=script_module, instance=script_module,
name=script.class_name, name=script.class_name,
user=user, user=user,
data=data data=event_rule.render_script_data(context)
) )
else: else:

View File

@ -172,6 +172,15 @@ class EventRule(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLogged
return ConditionSet(self.conditions).eval(data) return ConditionSet(self.conditions).eval(data)
def render_script_data(self, context):
"""
Render Script Data, if defined. Otherwise, jump the context as a JSON object.
"""
if self.action_data:
return render_jinja2(str(self.action_data), context)
else:
return json.dumps(context, cls=JSONEncoder)
class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel):
""" """