Преглед изворни кода

Fixes #4648: Fix bulk CSV import of child devices

Jeremy Stretch пре 5 година
родитељ
комит
a64351279d
2 измењених фајлова са 16 додато и 1 уклоњено
  1. 1 0
      docs/release-notes/version-2.8.md
  2. 15 1
      netbox/dcim/forms.py

+ 1 - 0
docs/release-notes/version-2.8.md

@@ -8,6 +8,7 @@ v2.8.5 (FUTURE)
 * [#4644](https://github.com/netbox-community/netbox/issues/4644) - Fix ordering of services table by parent
 * [#4646](https://github.com/netbox-community/netbox/issues/4646) - Correct UI link for reports with custom name
 * [#4647](https://github.com/netbox-community/netbox/issues/4647) - Fix caching invalidation issue related to assigning new IP addresses to interfaces
+* [#4648](https://github.com/netbox-community/netbox/issues/4648) - Fix bulk CSV import of child devices
 
 ---
 

+ 15 - 1
netbox/dcim/forms.py

@@ -1956,7 +1956,7 @@ class ChildDeviceCSVForm(BaseDeviceCSVForm):
         help_text='Parent device'
     )
     device_bay = CSVModelChoiceField(
-        queryset=Device.objects.all(),
+        queryset=DeviceBay.objects.all(),
         to_field_name='name',
         help_text='Device bay in which this device is installed'
     )
@@ -1976,6 +1976,20 @@ class ChildDeviceCSVForm(BaseDeviceCSVForm):
             params = {f"device__{self.fields['parent'].to_field_name}": data.get('parent')}
             self.fields['device_bay'].queryset = self.fields['device_bay'].queryset.filter(**params)
 
+    def clean(self):
+        super().clean()
+
+        # Set parent_bay reverse relationship
+        device_bay = self.cleaned_data.get('device_bay')
+        if device_bay:
+            self.instance.parent_bay = device_bay
+
+        # Inherit site and rack from parent device
+        parent = self.cleaned_data.get('parent')
+        if parent:
+            self.instance.site = parent.site
+            self.instance.rack = parent.rack
+
 
 class DeviceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm):
     pk = forms.ModelMultipleChoiceField(