From 8d9d4cec051c8b0e5433db538b2ae0a5debb92ea Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 23 Dec 2020 14:02:05 -0500 Subject: [PATCH] Extend handle_rackgroup_site_change() receiver to update power panels --- netbox/dcim/signals.py | 6 ++++-- netbox/dcim/tests/test_models.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index 380c0aec0..277e3f060 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -2,13 +2,12 @@ import logging from cacheops import invalidate_obj from django.contrib.contenttypes.models import ContentType -from django.db.models import Q from django.db.models.signals import post_save, post_delete, pre_delete from django.db import transaction from django.dispatch import receiver from .choices import CableStatusChoices -from .models import Cable, CablePath, Device, PathEndpoint, Rack, RackGroup, VirtualChassis +from .models import Cable, CablePath, Device, PathEndpoint, PowerPanel, Rack, RackGroup, VirtualChassis def create_cablepath(node): @@ -54,6 +53,9 @@ def handle_rackgroup_site_change(instance, created, **kwargs): for rack in Rack.objects.filter(group=instance).exclude(site=instance.site): rack.site = instance.site rack.save() + for powerpanel in PowerPanel.objects.filter(rack_group=instance).exclude(site=instance.site): + powerpanel.site = instance.site + powerpanel.save() @receiver(post_save, sender=Rack) diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index a372bb099..184681e90 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -29,6 +29,8 @@ class RackGroupTestCase(TestCase): rack1 = Rack.objects.create(site=site_a, group=rackgroup_a1, name='Rack 1') rack2 = Rack.objects.create(site=site_a, group=rackgroup_a2, name='Rack 2') + powerpanel1 = PowerPanel.objects.create(site=site_a, rack_group=rackgroup_a1, name='Power Panel 1') + # Move RackGroup A1 to Site B rackgroup_a1.site = site_b rackgroup_a1.save() @@ -38,6 +40,7 @@ class RackGroupTestCase(TestCase): self.assertEqual(RackGroup.objects.get(pk=rackgroup_a2.pk).site, site_b) self.assertEqual(Rack.objects.get(pk=rack1.pk).site, site_b) self.assertEqual(Rack.objects.get(pk=rack2.pk).site, site_b) + self.assertEqual(PowerPanel.objects.get(pk=powerpanel1.pk).site, site_b) class RackTestCase(TestCase):