diff --git a/netbox/extras/events_worker.py b/netbox/extras/events_worker.py index 76534159b..2d09937b1 100644 --- a/netbox/extras/events_worker.py +++ b/netbox/extras/events_worker.py @@ -1,15 +1,17 @@ import logging import requests +import sys from django.conf import settings from django_rq import job from jinja2.exceptions import TemplateError -from scripts.workers import process_script from .conditions import ConditionSet -from .constants import WEBHOOK_EVENT_TYPES, EVENT_TYPE_MODELS +from .choices import EventRuleTypeChoices +from .constants import WEBHOOK_EVENT_TYPES +from .scripts_worker import process_script from .webhooks import generate_signature -from webhooks_worker import process_webhook +from .webhooks_worker import process_webhook logger = logging.getLogger('netbox.events_worker') @@ -29,6 +31,11 @@ def eval_conditions(event_rule, data): return False +def import_module(name): + __import__(name) + return sys.modules[name] + + def module_member(name): mod, member = name.rsplit(".", 1) module = import_module(mod) @@ -36,9 +43,9 @@ def module_member(name): def process_event_rules(event_rule, model_name, event, data, timestamp, username, request_id): - if event_rule.event_type == EVENT_TYPE_MODELS.WEBHOOK: + if event_rule.event_type == EventRuleTypeChoices.WEBHOOK: process_webhook(event_rule, model_name, event, data, timestamp, username, request_id) - elif event_rule.event_type == EVENT_TYPE_MODELS.SCRIPT: + elif event_rule.event_type == EventRuleTypeChoicesEventRuleTypeChoices.SCRIPT: process_script(event_rule, model_name, event, data, timestamp, username, request_id) diff --git a/netbox/extras/migrations/0099_eventrule.py b/netbox/extras/migrations/0099_eventrule.py index 79cb002ee..838c71818 100644 --- a/netbox/extras/migrations/0099_eventrule.py +++ b/netbox/extras/migrations/0099_eventrule.py @@ -27,7 +27,7 @@ def move_webhooks(apps, schema_editor): event.event_type = EventRuleTypeChoices.WEBHOOK event.object_type_id = ContentType.objects.get_for_model(webhook).id - event.object = webhook + event.object_id = webhook.id event.save() event.content_types.add(*webhook.content_types.all()) diff --git a/netbox/extras/webhooks_worker.py b/netbox/extras/webhooks_worker.py index 9f64fc405..748afdbc8 100644 --- a/netbox/extras/webhooks_worker.py +++ b/netbox/extras/webhooks_worker.py @@ -12,11 +12,13 @@ from .webhooks import generate_signature logger = logging.getLogger('netbox.webhooks_worker') -def process_webhook(webhook, model_name, event, data, timestamp, username, request_id=None): +def process_webhook(event_rule, model_name, event, data, timestamp, username, request_id=None): """ Make a POST request to the defined Webhook """ + webhook = event_rule.object + # Build the headers for the HTTP request headers = { 'Content-Type': webhook.http_content_type,