Skip to content

Commit 8e251ac

Browse files
authored
13757 Fix ConfigContext reference to DeviceType (#13804)
* 13757 do prefetch to work around Django issue with vars in init (DeviceType) * 13757 use self.__dict to access vars in init * 13757 change test
1 parent 35bcc2c commit 8e251ac

File tree

7 files changed

+16
-14
lines changed

7 files changed

+16
-14
lines changed

netbox/dcim/models/cables.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,10 @@ def __init__(self, *args, a_terminations=None, b_terminations=None, **kwargs):
9898
super().__init__(*args, **kwargs)
9999

100100
# A copy of the PK to be used by __str__ in case the object is deleted
101-
self._pk = self.pk
101+
self._pk = self.__dict__.get('id')
102102

103103
# Cache the original status so we can check later if it's been changed
104-
self._orig_status = self.status
104+
self._orig_status = self.__dict__.get('status')
105105

106106
self._terminations_modified = False
107107

netbox/dcim/models/device_component_templates.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def __init__(self, *args, **kwargs):
8989
super().__init__(*args, **kwargs)
9090

9191
# Cache the original DeviceType ID for reference under clean()
92-
self._original_device_type = self.device_type_id
92+
self._original_device_type = self.__dict__.get('device_type_id')
9393

9494
def to_objectchange(self, action):
9595
objectchange = super().to_objectchange(action)

netbox/dcim/models/device_components.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def __init__(self, *args, **kwargs):
8686
super().__init__(*args, **kwargs)
8787

8888
# Cache the original Device ID for reference under clean()
89-
self._original_device = self.device_id
89+
self._original_device = self.__dict__.get('device_id')
9090

9191
def __str__(self):
9292
if self.label:

netbox/dcim/models/devices.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,11 @@ def __init__(self, *args, **kwargs):
205205
super().__init__(*args, **kwargs)
206206

207207
# Save a copy of u_height for validation in clean()
208-
self._original_u_height = self.u_height
208+
self._original_u_height = self.__dict__.get('u_height')
209209

210210
# Save references to the original front/rear images
211-
self._original_front_image = self.front_image
212-
self._original_rear_image = self.rear_image
211+
self._original_front_image = self.__dict__.get('front_image')
212+
self._original_rear_image = self.__dict__.get('rear_image')
213213

214214
def get_absolute_url(self):
215215
return reverse('dcim:devicetype', args=[self.pk])

netbox/extras/models/customfields.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def __init__(self, *args, **kwargs):
219219
super().__init__(*args, **kwargs)
220220

221221
# Cache instance's original name so we can check later whether it has changed
222-
self._name = self.name
222+
self._name = self.__dict__.get('name')
223223

224224
@property
225225
def search_type(self):

netbox/extras/tests/test_views.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from django.contrib.contenttypes.models import ContentType
77
from django.urls import reverse
88

9-
from dcim.models import Site
9+
from dcim.models import DeviceType, Manufacturer, Site
1010
from extras.choices import *
1111
from extras.models import *
1212
from utilities.testing import ViewTestCases, TestCase
@@ -434,7 +434,8 @@ class ConfigContextTestCase(
434434
@classmethod
435435
def setUpTestData(cls):
436436

437-
site = Site.objects.create(name='Site 1', slug='site-1')
437+
manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
438+
devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1')
438439

439440
# Create three ConfigContexts
440441
for i in range(1, 4):
@@ -443,19 +444,20 @@ def setUpTestData(cls):
443444
data={'foo': i}
444445
)
445446
configcontext.save()
446-
configcontext.sites.add(site)
447+
configcontext.device_types.add(devicetype)
447448

448449
cls.form_data = {
449450
'name': 'Config Context X',
450451
'weight': 200,
451452
'description': 'A new config context',
452453
'is_active': True,
453454
'regions': [],
454-
'sites': [site.pk],
455+
'sites': [],
455456
'roles': [],
456457
'platforms': [],
457458
'tenant_groups': [],
458459
'tenants': [],
460+
'device_types': [devicetype.id,],
459461
'tags': [],
460462
'data': '{"foo": 123}',
461463
}

netbox/ipam/models/ip.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ def __init__(self, *args, **kwargs):
290290
super().__init__(*args, **kwargs)
291291

292292
# Cache the original prefix and VRF so we can check if they have changed on post_save
293-
self._prefix = self.prefix
294-
self._vrf_id = self.vrf_id
293+
self._prefix = self.__dict__.get('prefix')
294+
self._vrf_id = self.__dict__.get('vrf_id')
295295

296296
def __str__(self):
297297
return str(self.prefix)

0 commit comments

Comments
 (0)