mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-08 16:48:16 -06:00
Signal receiver should ignore models which don't support notifications
This commit is contained in:
parent
865619baca
commit
b0e37bc12d
@ -12,13 +12,14 @@ from django_prometheus.models import model_deletes, model_inserts, model_updates
|
|||||||
from core.choices import ObjectChangeActionChoices
|
from core.choices import ObjectChangeActionChoices
|
||||||
from core.models import ObjectChange, ObjectType
|
from core.models import ObjectChange, ObjectType
|
||||||
from core.signals import job_end, job_start
|
from core.signals import job_end, job_start
|
||||||
from extras.choices import NotificationEventChoices, NotificationKindChoices
|
from extras.choices import NotificationEventChoices
|
||||||
from extras.constants import EVENT_JOB_END, EVENT_JOB_START
|
from extras.constants import EVENT_JOB_END, EVENT_JOB_START
|
||||||
from extras.events import process_event_rules
|
from extras.events import process_event_rules
|
||||||
from extras.models import EventRule, Notification, Subscription
|
from extras.models import EventRule, Notification, Subscription
|
||||||
from netbox.config import get_config
|
from netbox.config import get_config
|
||||||
from netbox.context import current_request, events_queue
|
from netbox.context import current_request, events_queue
|
||||||
from netbox.models.features import ChangeLoggingMixin
|
from netbox.models.features import ChangeLoggingMixin
|
||||||
|
from netbox.registry import registry
|
||||||
from netbox.signals import post_clean
|
from netbox.signals import post_clean
|
||||||
from utilities.exceptions import AbortRequest
|
from utilities.exceptions import AbortRequest
|
||||||
from .events import enqueue_object
|
from .events import enqueue_object
|
||||||
@ -289,10 +290,15 @@ def process_job_end_event_rules(sender, **kwargs):
|
|||||||
#
|
#
|
||||||
|
|
||||||
@receiver(post_save)
|
@receiver(post_save)
|
||||||
def notify_object_changed(sender, instance, **kwargs):
|
def notify_object_changed(sender, instance, created, raw, **kwargs):
|
||||||
ct = ContentType.objects.get_for_model(instance)
|
if created or raw:
|
||||||
|
return
|
||||||
|
|
||||||
# Find any Subscriptions for this object
|
ct = ContentType.objects.get_for_model(instance)
|
||||||
|
if ct.model not in registry['model_features']['notifications'].get(ct.app_label, []):
|
||||||
|
return
|
||||||
|
|
||||||
|
# Find any Subscriptions for supported objects
|
||||||
subscriptions = Subscription.objects.filter(object_type=ct, object_id=instance.pk).values('user')
|
subscriptions = Subscription.objects.filter(object_type=ct, object_id=instance.pk).values('user')
|
||||||
|
|
||||||
# Delete any existing Notifications for the object
|
# Delete any existing Notifications for the object
|
||||||
|
Loading…
Reference in New Issue
Block a user