Przeglądaj źródła

Closes #9060: Implement modulebay, iventory items and device bay filters (#9146)

* Closes #9060: Implement modulebay, iventory items and device bay filters

* add blank line
minitriga 3 lat temu
rodzic
commit
a3805fe04d
2 zmienionych plików z 29 dodań i 1 usunięć
  1. 7 0
      netbox/dcim/filtersets.py
  2. 22 1
      netbox/dcim/forms/filtersets.py

+ 7 - 0
netbox/dcim/filtersets.py

@@ -435,6 +435,10 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet):
         method='_device_bays',
         label='Has device bays',
     )
+    inventory_items = django_filters.BooleanFilter(
+        method='_inventory_items',
+        label='Has inventory items',
+    )
 
     class Meta:
         model = DeviceType
@@ -479,6 +483,9 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet):
     def _device_bays(self, queryset, name, value):
         return queryset.exclude(devicebaytemplates__isnull=value)
 
+    def _inventory_items(self, queryset, name, value):
+        return queryset.exclude(inventoryitemtemplates__isnull=value)
+
 
 class ModuleTypeFilterSet(NetBoxModelFilterSet):
     manufacturer_id = django_filters.ModelMultipleChoiceFilter(

+ 22 - 1
netbox/dcim/forms/filtersets.py

@@ -331,7 +331,7 @@ class DeviceTypeFilterForm(NetBoxModelFilterSetForm):
         ('Hardware', ('manufacturer_id', 'part_number', 'subdevice_role', 'airflow')),
         ('Components', (
             'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces',
-            'pass_through_ports',
+            'pass_through_ports', 'device_bays', 'module_bays', 'inventory_items',
         )),
     )
     manufacturer_id = DynamicModelMultipleChoiceField(
@@ -392,6 +392,27 @@ class DeviceTypeFilterForm(NetBoxModelFilterSetForm):
             choices=BOOLEAN_WITH_BLANK_CHOICES
         )
     )
+    device_bays = forms.NullBooleanField(
+        required=False,
+        label='Has device bays',
+        widget=StaticSelect(
+            choices=BOOLEAN_WITH_BLANK_CHOICES
+        )
+    )
+    module_bays = forms.NullBooleanField(
+        required=False,
+        label='Has module bays',
+        widget=StaticSelect(
+            choices=BOOLEAN_WITH_BLANK_CHOICES
+        )
+    )
+    inventory_items = forms.NullBooleanField(
+        required=False,
+        label='Has inventory items',
+        widget=StaticSelect(
+            choices=BOOLEAN_WITH_BLANK_CHOICES
+        )
+    )
     tag = TagFilterField(model)