diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index bb56103ac..50d32c4cf 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -84,7 +84,10 @@ class EventRuleSerializer(NetBoxModelSerializer): if instance.action_type == EventRuleActionChoices.SCRIPT: script = instance.action_object script_name = script.name - return NestedScriptSerializer(script.python_class(), context=context).data + if script.python_class: + return NestedScriptSerializer(script.python_class(), context=context).data + else: + return NestedScriptSerializer(None, context=context).data 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 f3a4aff6e..540e01103 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.db.models import Q from django.urls import reverse @@ -35,6 +36,11 @@ class Script(EventRulesMixin, JobsMixin, models.Model): is_valid = models.BooleanField( default=True ) + events = GenericRelation( + 'extras.EventRule', + content_type_field='action_object_type', + object_id_field='action_object_id' + ) def __str__(self): return self.name