Filter by rack (#175)

Fixes #174
This commit is contained in:
Roy Vegard Ovesen
2022-10-09 19:12:59 +02:00
committed by GitHub
parent 32042ff2cc
commit 94f5314649
2 changed files with 18 additions and 3 deletions
+6 -1
View File
@@ -2,7 +2,7 @@ from cProfile import label
import django_filters import django_filters
from django.db.models import Q from django.db.models import Q
from dcim.models import Device, DeviceRole, Region, Site, Location from dcim.models import Device, DeviceRole, Region, Site, Location, Rack
from dcim.choices import DeviceStatusChoices from dcim.choices import DeviceStatusChoices
from netbox.filtersets import NetBoxModelFilterSet from netbox.filtersets import NetBoxModelFilterSet
@@ -39,6 +39,11 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
lookup_expr='in', lookup_expr='in',
label='Location (ID)', label='Location (ID)',
) )
rack_id = django_filters.ModelMultipleChoiceFilter(
queryset=Rack.objects.all(),
field_name='rack_id',
label='Rack (ID)',
)
status = django_filters.MultipleChoiceFilter( status = django_filters.MultipleChoiceFilter(
choices=DeviceStatusChoices, choices=DeviceStatusChoices,
null_value=None, null_value=None,
+12 -2
View File
@@ -5,7 +5,7 @@ from django.conf import settings
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from dcim.models import Device, Site, Region, DeviceRole, Location from dcim.models import Device, Site, Region, DeviceRole, Location, Rack
from django import forms from django import forms
from dcim.choices import DeviceStatusChoices from dcim.choices import DeviceStatusChoices
@@ -23,7 +23,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
fieldsets = ( fieldsets = (
(None, ('q', 'hide_unconnected', 'save_coords', 'show_circuit', 'show_power' ,)), (None, ('q', 'hide_unconnected', 'save_coords', 'show_circuit', 'show_power' ,)),
(None, ('tenant_group_id', 'tenant_id',)), (None, ('tenant_group_id', 'tenant_id',)),
(None, ('region_id', 'site_id', 'location_id',)), (None, ('region_id', 'site_id', 'location_id', 'rack_id')),
(None, ('device_role_id','id','status', )), (None, ('device_role_id','id','status', )),
(None, ('tag', )), (None, ('tag', )),
) )
@@ -66,6 +66,16 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
}, },
label=_('Location') label=_('Location')
) )
rack_id = DynamicModelMultipleChoiceField(
queryset=Rack.objects.all(),
required=False,
query_params={
'region_id': '$region_id',
'site_id': '$site_id',
'location_id': '$location_id',
},
label=_('Rack')
)
hide_unconnected = forms.BooleanField( hide_unconnected = forms.BooleanField(
label=_("Hide Unconnected"), label=_("Hide Unconnected"),
required=False, required=False,