diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 587a6936b..ad142f473 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -17,7 +17,7 @@ from extras.utils import process_event_rules from netbox.config import get_config from netbox.constants import RQ_QUEUE_DEFAULT from utilities.querysets import RestrictedQuerySet -from utilities.rqworker import get_queue_for_model, get_rq_retry +from utilities.rqworker import get_queue_for_model __all__ = ( 'Job', @@ -235,19 +235,4 @@ class Job(models.Model): enabled=True ) - process_event_rules(event_rules, event, self.data, self.user.username) - - rq_queue_name = get_config().QUEUE_MAPPINGS.get('webhook', RQ_QUEUE_DEFAULT) - rq_queue = django_rq.get_queue(rq_queue_name, is_async=False) - - for event_rule in event_rules: - rq_queue.enqueue( - "extras.events_worker.process_event", - event_rule=event_rule, - model_name=self.object_type.model, - event=event, - data=self.data, - timestamp=str(timezone.now()), - username=self.user.username, - retry=get_rq_retry() - ) + process_event_rules(event_rules, self.object_type.model, event, self.data, self.user.username) diff --git a/netbox/extras/events.py b/netbox/extras/events.py index 15f6be7b8..d08dfcd4d 100644 --- a/netbox/extras/events.py +++ b/netbox/extras/events.py @@ -10,7 +10,6 @@ from netbox.config import get_config 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 .choices import * from .models import EventRule @@ -96,7 +95,10 @@ def process_event_queue(queue): ) event_rules = events_cache[action_flag][content_type] - process_event_rules(event_rules, data['event'], data['data'], data['username'], data['snapshots'], data['request_id']) + process_event_rules( + event_rules, content_type.model, data['event'], data['data'], data['username'], + snapshots=data['snapshots'], request_id=data['request_id'] + ) def import_module(name): diff --git a/netbox/extras/utils.py b/netbox/extras/utils.py index 80bc93277..6249e1307 100644 --- a/netbox/extras/utils.py +++ b/netbox/extras/utils.py @@ -1,13 +1,16 @@ import logging from django.db.models import Q -from django.utils.deconstruct import deconstructible from django_rq import get_queue +from django.utils import timezone +from django.utils.deconstruct import deconstructible from taggit.managers import _TaggableManager from extras.conditions import ConditionSet +from netbox.constants import RQ_QUEUE_DEFAULT from extras.choices import EventRuleActionChoices from netbox.config import get_config from netbox.registry import registry +from utilities.rqworker import get_rq_retry logger = logging.getLogger('netbox.extras.utils') @@ -93,7 +96,7 @@ def eval_conditions(event_rule, data): return False -def process_event_rules(event_rules, event, data, username, snapshots=None, request_id=None): +def process_event_rules(event_rules, model_name, event, data, username, snapshots=None, request_id=None): rq_queue_name = get_config().QUEUE_MAPPINGS.get('webhook', RQ_QUEUE_DEFAULT) rq_queue = get_queue(rq_queue_name) @@ -107,7 +110,7 @@ def process_event_rules(event_rules, event, data, username, snapshots=None, requ params = { "event_rule": event_rule, - "model_name": content_type.model, + "model_name": model_name, "event": event, "data": data, "snapshots": snapshots,