* add Site Group filter * revise query_params
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from dcim.choices import DeviceStatusChoices
|
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 django.db.models import Q
|
||||||
from netbox.filtersets import NetBoxModelFilterSet
|
from netbox.filtersets import NetBoxModelFilterSet
|
||||||
from tenancy.filtersets import TenancyFilterSet
|
from tenancy.filtersets import TenancyFilterSet
|
||||||
@@ -27,6 +27,12 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|||||||
queryset=Site.objects.all(),
|
queryset=Site.objects.all(),
|
||||||
label="Site (ID)",
|
label="Site (ID)",
|
||||||
)
|
)
|
||||||
|
sitegroup_id = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=SiteGroup.objects.all(),
|
||||||
|
field_name="site__group",
|
||||||
|
lookup_expr="in",
|
||||||
|
label="Site Group (ID)",
|
||||||
|
)
|
||||||
location_id = TreeNodeMultipleChoiceFilter(
|
location_id = TreeNodeMultipleChoiceFilter(
|
||||||
queryset=Location.objects.all(),
|
queryset=Location.objects.all(),
|
||||||
field_name="location",
|
field_name="location",
|
||||||
|
|||||||
@@ -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, Rack
|
from dcim.models import Device, Site, SiteGroup, Region, DeviceRole, Location, Rack
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from dcim.choices import DeviceStatusChoices
|
from dcim.choices import DeviceStatusChoices
|
||||||
@@ -52,7 +52,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
"tenant_id",
|
"tenant_id",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(None, ("region_id", "site_id", "location_id", "rack_id")),
|
(None, ("region_id", "sitegroup_id", "site_id", "location_id", "rack_id")),
|
||||||
(
|
(
|
||||||
None,
|
None,
|
||||||
(
|
(
|
||||||
@@ -69,10 +69,14 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
label=_("Coordinate group"),
|
label=_("Coordinate group"),
|
||||||
)
|
)
|
||||||
region_id = DynamicModelMultipleChoiceField(
|
region_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Region.objects.all(), required=False, label=_("Region")
|
queryset=Region.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label=_("Region")
|
||||||
)
|
)
|
||||||
role_id = DynamicModelMultipleChoiceField(
|
role_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=DeviceRole.objects.all(), required=False, label=_("Device Role")
|
queryset=DeviceRole.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label=_("Device Role")
|
||||||
)
|
)
|
||||||
id = DynamicModelMultipleChoiceField(
|
id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Device.objects.all(),
|
queryset=Device.objects.all(),
|
||||||
@@ -81,6 +85,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
query_params={
|
query_params={
|
||||||
"location_id": "$location_id",
|
"location_id": "$location_id",
|
||||||
"region_id": "$region_id",
|
"region_id": "$region_id",
|
||||||
|
"site_group_id": "$sitegroup_id",
|
||||||
"site_id": "$site_id",
|
"site_id": "$site_id",
|
||||||
"role_id": "$role_id",
|
"role_id": "$role_id",
|
||||||
},
|
},
|
||||||
@@ -90,14 +95,21 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
required=False,
|
required=False,
|
||||||
query_params={
|
query_params={
|
||||||
"region_id": "$region_id",
|
"region_id": "$region_id",
|
||||||
|
"group_id": "$sitegroup_id",
|
||||||
},
|
},
|
||||||
label=_("Site"),
|
label=_("Site"),
|
||||||
)
|
)
|
||||||
|
sitegroup_id = DynamicModelMultipleChoiceField(
|
||||||
|
queryset=SiteGroup.objects.all(),
|
||||||
|
required=False,
|
||||||
|
label=_("Site Group"),
|
||||||
|
)
|
||||||
location_id = DynamicModelMultipleChoiceField(
|
location_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Location.objects.all(),
|
queryset=Location.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
query_params={
|
query_params={
|
||||||
"region_id": "$region_id",
|
"region_id": "$region_id",
|
||||||
|
"site_group_id": "$sitegroup_id",
|
||||||
"site_id": "$site_id",
|
"site_id": "$site_id",
|
||||||
},
|
},
|
||||||
label=_("Location"),
|
label=_("Location"),
|
||||||
@@ -107,6 +119,7 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
required=False,
|
required=False,
|
||||||
query_params={
|
query_params={
|
||||||
"region_id": "$region_id",
|
"region_id": "$region_id",
|
||||||
|
"site_group_id": "$sitegroup_id",
|
||||||
"site_id": "$site_id",
|
"site_id": "$site_id",
|
||||||
"location_id": "$location_id",
|
"location_id": "$location_id",
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user