This commit is contained in:
Renato Almeida de Oliveira 2024-04-25 17:27:57 +02:00 committed by GitHub
commit 4736fe8f5c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 1 deletions

View File

@ -1,4 +1,5 @@
import logging
import json
from django.conf import settings
from django.contrib.auth import get_user_model
@ -15,7 +16,7 @@ from netbox.constants import RQ_QUEUE_DEFAULT
from netbox.registry import registry
from utilities.api import get_serializer_for_model
from utilities.rqworker import get_rq_retry
from utilities.utils import serialize_object
from utilities.utils import serialize_object, render_jinja2
from .choices import *
from .models import EventRule, ScriptModule
@ -120,6 +121,22 @@ def process_event_rules(event_rules, model_name, event, data, username=None, sna
script_name = event_rule.action_parameters['script_name']
script = script_module.scripts[script_name]()
# Process Action Data
if event_rule.action_data:
context = {
'event': event,
'timestamp': timezone.now().isoformat(),
'model': model_name,
'username': username,
'request_id': request_id,
'model': data,
}
rendered_data = render_jinja2(json.dumps(event_rule.action_data), context)
form = script.as_form(json.loads(rendered_data))
if form.is_valid():
data = form.cleaned_data
# Enqueue a Job to record the script's execution
Job.enqueue(
"extras.scripts.run_script",