소스 검색

Closes #3154: Add virtual_chassis_member device filter

Jeremy Stretch 6 년 전
부모
커밋
954ba91c86
3개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      CHANGELOG.md
  2. 7 0
      netbox/dcim/filters.py
  3. 7 0
      netbox/dcim/forms.py

+ 1 - 0
CHANGELOG.md

@@ -2,6 +2,7 @@ v2.6.1 (FUTURE)
 
 ## Enhancements
 
+* [#3154](https://github.com/digitalocean/netbox/issues/3154) - Add `virtual_chassis_member` device filter
 * [#3277](https://github.com/digitalocean/netbox/issues/3277) - Add cable trace buttons for console and power ports
 * [#3281](https://github.com/digitalocean/netbox/issues/3281) - Hide custom links which render as empty text
 

+ 7 - 0
netbox/dcim/filters.py

@@ -527,6 +527,10 @@ class DeviceFilter(TenancyFilterSet, CustomFieldFilterSet):
         queryset=VirtualChassis.objects.all(),
         label='Virtual chassis (ID)',
     )
+    virtual_chassis_member = django_filters.BooleanFilter(
+        method='_virtual_chassis_member',
+        label='Is a virtual chassis member'
+    )
     console_ports = django_filters.BooleanFilter(
         method='_console_ports',
         label='Has console ports',
@@ -590,6 +594,9 @@ class DeviceFilter(TenancyFilterSet, CustomFieldFilterSet):
                 Q(primary_ip6__isnull=False)
             )
 
+    def _virtual_chassis_member(self, queryset, name, value):
+        return queryset.exclude(virtual_chassis__isnull=value)
+
     def _console_ports(self, queryset, name, value):
         return queryset.exclude(consoleports__isnull=value)
 

+ 7 - 0
netbox/dcim/forms.py

@@ -1750,6 +1750,13 @@ class DeviceFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm)
             choices=BOOLEAN_WITH_BLANK_CHOICES
         )
     )
+    virtual_chassis_member = forms.NullBooleanField(
+        required=False,
+        label='Virtual chassis member',
+        widget=StaticSelect2(
+            choices=BOOLEAN_WITH_BLANK_CHOICES
+        )
+    )
     console_ports = forms.NullBooleanField(
         required=False,
         label='Has console ports',