Просмотр исходного кода

Extend handle_rackgroup_site_change() receiver to update power panels

Jeremy Stretch 5 лет назад
Родитель
Сommit
8d9d4cec05
2 измененных файлов с 7 добавлено и 2 удалено
  1. 4 2
      netbox/dcim/signals.py
  2. 3 0
      netbox/dcim/tests/test_models.py

+ 4 - 2
netbox/dcim/signals.py

@@ -2,13 +2,12 @@ import logging
 
 
 from cacheops import invalidate_obj
 from cacheops import invalidate_obj
 from django.contrib.contenttypes.models import ContentType
 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.models.signals import post_save, post_delete, pre_delete
 from django.db import transaction
 from django.db import transaction
 from django.dispatch import receiver
 from django.dispatch import receiver
 
 
 from .choices import CableStatusChoices
 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):
 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):
         for rack in Rack.objects.filter(group=instance).exclude(site=instance.site):
             rack.site = instance.site
             rack.site = instance.site
             rack.save()
             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)
 @receiver(post_save, sender=Rack)

+ 3 - 0
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')
         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')
         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
         # Move RackGroup A1 to Site B
         rackgroup_a1.site = site_b
         rackgroup_a1.site = site_b
         rackgroup_a1.save()
         rackgroup_a1.save()
@@ -38,6 +40,7 @@ class RackGroupTestCase(TestCase):
         self.assertEqual(RackGroup.objects.get(pk=rackgroup_a2.pk).site, site_b)
         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=rack1.pk).site, site_b)
         self.assertEqual(Rack.objects.get(pk=rack2.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):
 class RackTestCase(TestCase):