Skip to content

Commit a3805fe

Browse files
authored
Closes #9060: Implement modulebay, iventory items and device bay filters (#9146)
* Closes #9060: Implement modulebay, iventory items and device bay filters * add blank line
1 parent d4f1cb5 commit a3805fe

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

netbox/dcim/filtersets.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,10 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet):
435435
method='_device_bays',
436436
label='Has device bays',
437437
)
438+
inventory_items = django_filters.BooleanFilter(
439+
method='_inventory_items',
440+
label='Has inventory items',
441+
)
438442

439443
class Meta:
440444
model = DeviceType
@@ -479,6 +483,9 @@ def _module_bays(self, queryset, name, value):
479483
def _device_bays(self, queryset, name, value):
480484
return queryset.exclude(devicebaytemplates__isnull=value)
481485

486+
def _inventory_items(self, queryset, name, value):
487+
return queryset.exclude(inventoryitemtemplates__isnull=value)
488+
482489

483490
class ModuleTypeFilterSet(NetBoxModelFilterSet):
484491
manufacturer_id = django_filters.ModelMultipleChoiceFilter(

netbox/dcim/forms/filtersets.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ class DeviceTypeFilterForm(NetBoxModelFilterSetForm):
331331
('Hardware', ('manufacturer_id', 'part_number', 'subdevice_role', 'airflow')),
332332
('Components', (
333333
'console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces',
334-
'pass_through_ports',
334+
'pass_through_ports', 'device_bays', 'module_bays', 'inventory_items',
335335
)),
336336
)
337337
manufacturer_id = DynamicModelMultipleChoiceField(
@@ -392,6 +392,27 @@ class DeviceTypeFilterForm(NetBoxModelFilterSetForm):
392392
choices=BOOLEAN_WITH_BLANK_CHOICES
393393
)
394394
)
395+
device_bays = forms.NullBooleanField(
396+
required=False,
397+
label='Has device bays',
398+
widget=StaticSelect(
399+
choices=BOOLEAN_WITH_BLANK_CHOICES
400+
)
401+
)
402+
module_bays = forms.NullBooleanField(
403+
required=False,
404+
label='Has module bays',
405+
widget=StaticSelect(
406+
choices=BOOLEAN_WITH_BLANK_CHOICES
407+
)
408+
)
409+
inventory_items = forms.NullBooleanField(
410+
required=False,
411+
label='Has inventory items',
412+
widget=StaticSelect(
413+
choices=BOOLEAN_WITH_BLANK_CHOICES
414+
)
415+
)
395416
tag = TagFilterField(model)
396417

397418

0 commit comments

Comments
 (0)