Closes #381: Filter by site group (#382)

* add Site Group filter

* revise query_params
This commit is contained in:
Mario
2023-09-21 16:15:45 +02:00
committed by GitHub
parent 78b8a5ae97
commit 86c0c55896
2 changed files with 24 additions and 5 deletions
+7 -1
View File
@@ -1,6 +1,6 @@
import django_filters
from dcim.choices import DeviceStatusChoices
from dcim.models import Device, DeviceRole, Location, Rack, Region, Site
from dcim.models import Device, DeviceRole, Location, Rack, Region, Site, SiteGroup
from django.db.models import Q
from netbox.filtersets import NetBoxModelFilterSet
from tenancy.filtersets import TenancyFilterSet
@@ -27,6 +27,12 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
queryset=Site.objects.all(),
label="Site (ID)",
)
sitegroup_id = TreeNodeMultipleChoiceFilter(
queryset=SiteGroup.objects.all(),
field_name="site__group",
lookup_expr="in",
label="Site Group (ID)",
)
location_id = TreeNodeMultipleChoiceFilter(
queryset=Location.objects.all(),
field_name="location",
+17 -4
View File
@@ -5,7 +5,7 @@ from django.conf import settings
from django.utils.translation import gettext as _
from dcim.models import Device, Site, Region, DeviceRole, Location, Rack
from dcim.models import Device, Site, SiteGroup, Region, DeviceRole, Location, Rack
from django import forms
from dcim.choices import DeviceStatusChoices
@@ -52,7 +52,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
"tenant_id",
),
),
(None, ("region_id", "site_id", "location_id", "rack_id")),
(None, ("region_id", "sitegroup_id", "site_id", "location_id", "rack_id")),
(
None,
(
@@ -69,10 +69,14 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
label=_("Coordinate group"),
)
region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), required=False, label=_("Region")
queryset=Region.objects.all(),
required=False,
label=_("Region")
)
role_id = DynamicModelMultipleChoiceField(
queryset=DeviceRole.objects.all(), required=False, label=_("Device Role")
queryset=DeviceRole.objects.all(),
required=False,
label=_("Device Role")
)
id = DynamicModelMultipleChoiceField(
queryset=Device.objects.all(),
@@ -81,6 +85,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
query_params={
"location_id": "$location_id",
"region_id": "$region_id",
"site_group_id": "$sitegroup_id",
"site_id": "$site_id",
"role_id": "$role_id",
},
@@ -90,14 +95,21 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
required=False,
query_params={
"region_id": "$region_id",
"group_id": "$sitegroup_id",
},
label=_("Site"),
)
sitegroup_id = DynamicModelMultipleChoiceField(
queryset=SiteGroup.objects.all(),
required=False,
label=_("Site Group"),
)
location_id = DynamicModelMultipleChoiceField(
queryset=Location.objects.all(),
required=False,
query_params={
"region_id": "$region_id",
"site_group_id": "$sitegroup_id",
"site_id": "$site_id",
},
label=_("Location"),
@@ -107,6 +119,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
required=False,
query_params={
"region_id": "$region_id",
"site_group_id": "$sitegroup_id",
"site_id": "$site_id",
"location_id": "$location_id",
},