From 4b21cf604b351f029b398b7811e38cb103b148e0 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 29 Apr 2024 09:44:02 -0700 Subject: [PATCH] 14852 delete event-rule when delete script --- netbox/extras/api/serializers.py | 7 +++++-- netbox/extras/models/scripts.py | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index 8f00e11d9..43618506d 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -89,8 +89,11 @@ class EventRuleSerializer(NetBoxModelSerializer): # We need to manually instantiate the serializer for scripts if instance.action_type == EventRuleActionChoices.SCRIPT: script_name = instance.action_parameters['script_name'] - script = instance.action_object.scripts[script_name]() - return NestedScriptSerializer(script, context=context).data + if script_name in instance.action_object.scripts: + script = instance.action_object.scripts[script_name]() + return NestedScriptSerializer(script, context=context).data + else: + return None else: serializer = get_serializer_for_model( model=instance.action_object_type.model_class(), diff --git a/netbox/extras/models/scripts.py b/netbox/extras/models/scripts.py index 93275acda..0a0d6541b 100644 --- a/netbox/extras/models/scripts.py +++ b/netbox/extras/models/scripts.py @@ -2,6 +2,7 @@ import inspect import logging from functools import cached_property +from django.contrib.contenttypes.fields import GenericRelation from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -41,6 +42,13 @@ class ScriptModule(PythonModuleMixin, JobsMixin, ManagedFile): """ objects = ScriptModuleManager() + event_rules = GenericRelation( + to='extras.EventRule', + content_type_field='action_object_type', + object_id_field='action_object_id', + for_concrete_model=False + ) + class Meta: proxy = True verbose_name = _('script module')