added filter on device status

This commit is contained in:
Mattijs Vanhaverbeke
2022-06-30 22:03:23 +02:00
parent 877d308574
commit d4833071df
2 changed files with 20 additions and 5 deletions
+7
View File
@@ -1,7 +1,9 @@
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
from dcim.choices import DeviceStatusChoices
from netbox.filtersets import NetBoxModelFilterSet from netbox.filtersets import NetBoxModelFilterSet
@@ -37,6 +39,11 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
lookup_expr='in', lookup_expr='in',
label='Location (ID)', label='Location (ID)',
) )
status = django_filters.MultipleChoiceFilter(
choices=DeviceStatusChoices,
null_value=None
)
class Meta: class Meta:
model = Device model = Device
+13 -5
View File
@@ -1,3 +1,4 @@
from cProfile import label
import imp import imp
from django import forms from django import forms
from django.conf import settings from django.conf import settings
@@ -7,11 +8,12 @@ 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
from django import forms from django import forms
from dcim.choices import DeviceStatusChoices
from tenancy.models import TenantGroup, Tenant from tenancy.models import TenantGroup, Tenant
from tenancy.forms import TenancyFilterForm from tenancy.forms import TenancyFilterForm
from django.conf import settings from django.conf import settings
from netbox.forms import NetBoxModelFilterSetForm from netbox.forms import NetBoxModelFilterSetForm
from utilities.forms import (TagFilterField, DynamicModelMultipleChoiceField) from utilities.forms import (TagFilterField, DynamicModelMultipleChoiceField, MultipleChoiceField)
allow_coordinates_saving = settings.PLUGINS_CONFIG["netbox_topology_views"]["allow_coordinates_saving"] allow_coordinates_saving = settings.PLUGINS_CONFIG["netbox_topology_views"]["allow_coordinates_saving"]
end2end = settings.PLUGINS_CONFIG["netbox_topology_views"]["end2end_connections"] end2end = settings.PLUGINS_CONFIG["netbox_topology_views"]["end2end_connections"]
@@ -24,7 +26,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
(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')),
(None, ('device_role_id', 'intermediate_dev_role_id')), (None, ('device_role_id', 'intermediate_dev_role_id')),
(None, ('tag',)), (None, ('tag', 'status')),
) )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
@@ -68,11 +70,17 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
hide_unconnected = forms.BooleanField( hide_unconnected = forms.BooleanField(
label=_("Hide Unconnected"), label=_("Hide Unconnected"),
required=False, required=False,
initial=False) initial=False
)
save_coords = forms.BooleanField( save_coords = forms.BooleanField(
label=_("Save Coordinates"), label=_("Save Coordinates"),
required=False, required=False,
disabled=(not allow_coordinates_saving), disabled=(not allow_coordinates_saving),
initial=False) initial=False
)
status = MultipleChoiceField(
choices=DeviceStatusChoices,
required=False,
label=_("Device Status")
)
tag = TagFilterField(model) tag = TagFilterField(model)