From 991c9b8f0aecebe5f06dacc37ee58db70f2096f3 Mon Sep 17 00:00:00 2001 From: Saria Hajjar Date: Fri, 21 Feb 2020 21:34:21 +0000 Subject: [PATCH] Privatized the cached fields (to assist with #4227) --- .../0099_outlet_related_powerports.py | 12 +++++------ netbox/dcim/models/device_components.py | 20 +++++++++---------- netbox/dcim/tests/test_models.py | 16 +++++++-------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/netbox/dcim/migrations/0099_outlet_related_powerports.py b/netbox/dcim/migrations/0099_outlet_related_powerports.py index 1bc26776f..03cb0d1d7 100644 --- a/netbox/dcim/migrations/0099_outlet_related_powerports.py +++ b/netbox/dcim/migrations/0099_outlet_related_powerports.py @@ -48,8 +48,8 @@ def update_related_powerports(apps, schema_editor): _connected_poweroutlet__power_port__in=downstream_powerports, ) - poweroutlet.upstream_powerports.set(upstream_powerports) - poweroutlet.downstream_powerports.set(downstream_powerports) + poweroutlet._upstream_powerports.set(upstream_powerports) + poweroutlet._downstream_powerports.set(downstream_powerports) class Migration(migrations.Migration): @@ -61,13 +61,13 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( model_name='poweroutlet', - name='downstream_powerports', - field=models.ManyToManyField(blank=True, related_name='upstream_poweroutlets', to='dcim.PowerPort'), + name='_downstream_powerports', + field=models.ManyToManyField(blank=True, related_name='_upstream_poweroutlets', to='dcim.PowerPort'), ), migrations.AddField( model_name='poweroutlet', - name='upstream_powerports', - field=models.ManyToManyField(blank=True, related_name='downstream_poweroutlets', to='dcim.PowerPort'), + name='_upstream_powerports', + field=models.ManyToManyField(blank=True, related_name='_downstream_poweroutlets', to='dcim.PowerPort'), ), migrations.RunPython( code=update_related_powerports, diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 198d380ce..507429d49 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -403,7 +403,7 @@ class PowerPort(CableTermination, ComponentModel): def _stats(): # Power ports drawing power from the local outlets return PowerPort.objects.filter( - pk__in=outlets.values_list('downstream_powerports', flat=True), + pk__in=outlets.values_list('_downstream_powerports', flat=True), ).aggregate( Sum('allocated_draw'), Sum('maximum_draw'), @@ -489,14 +489,14 @@ class PowerOutlet(CableTermination, ComponentModel): choices=CONNECTION_STATUS_CHOICES, blank=True ) - downstream_powerports = models.ManyToManyField( + _downstream_powerports = models.ManyToManyField( to='dcim.PowerPort', - related_name='upstream_poweroutlets', + related_name='_upstream_poweroutlets', blank=True ) - upstream_powerports = models.ManyToManyField( + _upstream_powerports = models.ManyToManyField( to='dcim.PowerPort', - related_name='downstream_poweroutlets', + related_name='_downstream_poweroutlets', blank=True ) tags = TaggableManager(through=TaggedItem) @@ -581,15 +581,15 @@ class PowerOutlet(CableTermination, ComponentModel): upstream_powerports = self.calculate_upstream_powerports() downstream_powerports = self.calculate_downstream_powerports() - old_parents = PowerOutlet.objects.filter(connected_endpoint__in=self.upstream_powerports.all()) + old_parents = PowerOutlet.objects.filter(connected_endpoint__in=self._upstream_powerports.all()) new_parents = PowerOutlet.objects.filter(connected_endpoint__in=upstream_powerports) for outlet in old_parents | new_parents: - outlet.upstream_powerports.set(outlet.calculate_upstream_powerports()) - outlet.downstream_powerports.set(outlet.calculate_downstream_powerports()) + outlet._upstream_powerports.set(outlet.calculate_upstream_powerports()) + outlet._downstream_powerports.set(outlet.calculate_downstream_powerports()) - self.upstream_powerports.set(self.calculate_upstream_powerports()) - self.downstream_powerports.set(self.calculate_downstream_powerports()) + self._upstream_powerports.set(self.calculate_upstream_powerports()) + self._downstream_powerports.set(self.calculate_downstream_powerports()) # diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index 375dda854..812c9c88c 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -708,17 +708,17 @@ class PowerCalculationTestCase(TestCase): # With a loop in the topology, all of the outlets affected by the loop have the same children. power_outlet12 # is not part of the loop and should only have one child, power_port21. - self.assertEqual(self.power_outlet12.downstream_powerports.count(), 1) - self.assertEqual(self.power_outlet13.downstream_powerports.count(), 4) - self.assertEqual(self.power_outlet34.downstream_powerports.count(), 4) - self.assertEqual(self.power_outlet41.downstream_powerports.count(), 4) + self.assertEqual(self.power_outlet12._downstream_powerports.count(), 1) + self.assertEqual(self.power_outlet13._downstream_powerports.count(), 4) + self.assertEqual(self.power_outlet34._downstream_powerports.count(), 4) + self.assertEqual(self.power_outlet41._downstream_powerports.count(), 4) # When a loop-causing cable is removed, the downstream_powerports of the other outlets in the loop should be # updated appropriately. This test is necessary because, in a loop, each outlet is upstream and downstream of # every other outlet in that loop. loop_cable.delete() - self.assertEqual(self.power_outlet12.downstream_powerports.count(), 1) - self.assertEqual(self.power_outlet13.downstream_powerports.count(), 2) - self.assertEqual(self.power_outlet34.downstream_powerports.count(), 1) - self.assertEqual(self.power_outlet41.downstream_powerports.count(), 0) + self.assertEqual(self.power_outlet12._downstream_powerports.count(), 1) + self.assertEqual(self.power_outlet13._downstream_powerports.count(), 2) + self.assertEqual(self.power_outlet34._downstream_powerports.count(), 1) + self.assertEqual(self.power_outlet41._downstream_powerports.count(), 0)