Fixes: #3016 - Add wrapper for post_save and post_delete signals

This commit is contained in:
Daniel Sheppard 2020-01-31 09:54:37 -06:00
parent 4522a285e0
commit 12db28fab6
3 changed files with 19 additions and 0 deletions

View File

@ -2,9 +2,12 @@ from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver from django.dispatch import receiver
from django.utils import timezone from django.utils import timezone
from extras.signals import disable_for_loaddata
from .models import Circuit, CircuitTermination from .models import Circuit, CircuitTermination
@disable_for_loaddata
@receiver((post_save, post_delete), sender=CircuitTermination) @receiver((post_save, post_delete), sender=CircuitTermination)
def update_circuit(instance, **kwargs): def update_circuit(instance, **kwargs):
""" """

View File

@ -1,9 +1,12 @@
from django.db.models.signals import post_save, pre_delete from django.db.models.signals import post_save, pre_delete
from django.dispatch import receiver from django.dispatch import receiver
from extras.signals import disable_for_loaddata
from .models import Cable, Device, VirtualChassis from .models import Cable, Device, VirtualChassis
@disable_for_loaddata
@receiver(post_save, sender=VirtualChassis) @receiver(post_save, sender=VirtualChassis)
def assign_virtualchassis_master(instance, created, **kwargs): def assign_virtualchassis_master(instance, created, **kwargs):
""" """
@ -17,6 +20,7 @@ def assign_virtualchassis_master(instance, created, **kwargs):
device.save() device.save()
@disable_for_loaddata
@receiver(pre_delete, sender=VirtualChassis) @receiver(pre_delete, sender=VirtualChassis)
def clear_virtualchassis_members(instance, **kwargs): def clear_virtualchassis_members(instance, **kwargs):
""" """
@ -29,6 +33,7 @@ def clear_virtualchassis_members(instance, **kwargs):
device.save() device.save()
@disable_for_loaddata
@receiver(post_save, sender=Cable) @receiver(post_save, sender=Cable)
def update_connected_endpoints(instance, **kwargs): def update_connected_endpoints(instance, **kwargs):
""" """
@ -54,6 +59,7 @@ def update_connected_endpoints(instance, **kwargs):
endpoint_b.save() endpoint_b.save()
@disable_for_loaddata
@receiver(pre_delete, sender=Cable) @receiver(pre_delete, sender=Cable)
def nullify_connected_endpoints(instance, **kwargs): def nullify_connected_endpoints(instance, **kwargs):
""" """

View File

@ -1,6 +1,7 @@
from cacheops.signals import cache_invalidated, cache_read from cacheops.signals import cache_invalidated, cache_read
from django.dispatch import Signal from django.dispatch import Signal
from prometheus_client import Counter from prometheus_client import Counter
from functools import wraps
# #
@ -12,6 +13,15 @@ cacheops_cache_miss = Counter('cacheops_cache_miss', 'Number of cache misses')
cacheops_cache_invalidated = Counter('cacheops_cache_invalidated', 'Number of cache invalidations') cacheops_cache_invalidated = Counter('cacheops_cache_invalidated', 'Number of cache invalidations')
def disable_for_loaddata(signal_handler):
@wraps(signal_handler)
def wrapper(*args, **kwargs):
if kwargs['raw']:
return
signal_handler(*args, **kwargs)
return wrapper
def cache_read_collector(sender, func, hit, **kwargs): def cache_read_collector(sender, func, hit, **kwargs):
if hit: if hit:
cacheops_cache_hit.inc() cacheops_cache_hit.inc()