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

Fix support for enable=false under DeviceBayTemplateImportForm

Jeremy Stretch 1 неделя назад
Родитель
Сommit
e57ab760df

+ 1 - 8
netbox/dcim/forms/object_import.py

@@ -230,13 +230,6 @@ class ModuleBayTemplateImportForm(forms.ModelForm):
             'module_bay_types',
         ]
 
-    def clean_enabled(self):
-        # A dict-bound BooleanField resolves a missing key to False, not the model's own
-        # default=True -- match ModuleBayImportForm's equivalent CSV-import behavior.
-        if 'enabled' not in self.data:
-            return True
-        return self.cleaned_data['enabled']
-
     def _scope_module_bay_types(self, manufacturer):
         module_bay_types = self.fields['module_bay_types']
         module_bay_types.queryset = module_bay_types.queryset.filter(
@@ -286,7 +279,7 @@ class DeviceBayTemplateImportForm(forms.ModelForm):
     class Meta:
         model = DeviceBayTemplate
         fields = [
-            'device_type', 'name', 'label', 'description',
+            'device_type', 'name', 'label', 'enabled', 'description',
         ]
 
 

+ 0 - 14
netbox/dcim/tests/test_forms.py

@@ -294,20 +294,6 @@ class ModuleBayTemplateImportFormTestCase(TestCase):
         )
         self.assertNotIn(global_type, module_bay_template.module_bay_types.all())
 
-    def test_enabled_defaults_true_when_omitted(self):
-        device_type = DeviceType.objects.create(
-            manufacturer=Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1'),
-            model='Device Type 1',
-            slug='device-type-1',
-        )
-
-        form = ModuleBayTemplateImportForm({
-            'device_type': device_type.pk,
-            'name': 'Module Bay 1',
-        })
-        self.assertTrue(form.is_valid(), form.errors)
-        self.assertTrue(form.save().enabled)
-
     def test_enabled_honors_explicit_false(self):
         device_type = DeviceType.objects.create(
             manufacturer=Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1'),

+ 10 - 0
netbox/dcim/tests/test_views.py

@@ -1004,10 +1004,12 @@ module-bays:
     module_bay_types:
       - SFP28
   - name: Module Bay 2
+    enabled: false
   - name: Module Bay 3
 device-bays:
   - name: Device Bay 1
   - name: Device Bay 2
+    enabled: false
   - name: Device Bay 3
 inventory-items:
   - name: Inventory Item 1
@@ -1133,10 +1135,18 @@ inventory-items:
         mb1 = ModuleBayTemplate.objects.first()
         self.assertEqual(mb1.name, 'Module Bay 1')
         self.assertEqual(list(mb1.module_bay_types.values_list('name', flat=True)), ['SFP28'])
+        self.assertTrue(mb1.enabled)
+
+        mb2 = ModuleBayTemplate.objects.filter(name='Module Bay 2').first()
+        self.assertFalse(mb2.enabled)
 
         self.assertEqual(device_type.devicebaytemplates.count(), 3)
         db1 = DeviceBayTemplate.objects.first()
         self.assertEqual(db1.name, 'Device Bay 1')
+        self.assertTrue(db1.enabled)
+
+        db2 = DeviceBayTemplate.objects.filter(name='Device Bay 2').first()
+        self.assertFalse(db2.enabled)
 
         self.assertEqual(device_type.inventoryitemtemplates.count(), 3)
         ii1 = InventoryItemTemplate.objects.first()