Enable filter form modifiers on IPAM models

This commit is contained in:
Jason Novinger 2025-11-07 16:01:20 -06:00
parent 067c670243
commit e7ad66f2ef

View File

@ -4,11 +4,14 @@ from django.utils.translation import gettext_lazy as _
from dcim.models import Location, Rack, Region, Site, SiteGroup, Device from dcim.models import Location, Rack, Region, Site, SiteGroup, Device
from ipam.choices import * from ipam.choices import *
from ipam.constants import * from ipam.constants import *
from ipam.filtersets import *
from ipam.models import * from ipam.models import *
from netbox.forms import NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm, PrimaryModelFilterSetForm from netbox.forms import NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm, PrimaryModelFilterSetForm
from tenancy.forms import ContactModelFilterForm, TenancyFilterForm from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice
from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField
from utilities.forms.filterset_mappings import FILTERSET_MAPPINGS
from utilities.forms.mixins import FilterModifierMixin
from utilities.forms.rendering import FieldSet from utilities.forms.rendering import FieldSet
from virtualization.models import VirtualMachine, ClusterGroup, Cluster from virtualization.models import VirtualMachine, ClusterGroup, Cluster
from vpn.models import L2VPN from vpn.models import L2VPN
@ -42,7 +45,7 @@ IPADDRESS_MASK_LENGTH_CHOICES = add_blank_choice([
]) ])
class VRFFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm): class VRFFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = VRF model = VRF
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -62,7 +65,7 @@ class VRFFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class RouteTargetFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm): class RouteTargetFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = RouteTarget model = RouteTarget
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -82,7 +85,7 @@ class RouteTargetFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class RIRFilterForm(OrganizationalModelFilterSetForm): class RIRFilterForm(FilterModifierMixin, OrganizationalModelFilterSetForm):
model = RIR model = RIR
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -98,7 +101,7 @@ class RIRFilterForm(OrganizationalModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class AggregateFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm): class AggregateFilterForm(FilterModifierMixin, ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
model = Aggregate model = Aggregate
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -119,7 +122,7 @@ class AggregateFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryMode
tag = TagFilterField(model) tag = TagFilterField(model)
class ASNRangeFilterForm(TenancyFilterForm, OrganizationalModelFilterSetForm): class ASNRangeFilterForm(FilterModifierMixin, TenancyFilterForm, OrganizationalModelFilterSetForm):
model = ASNRange model = ASNRange
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -142,7 +145,7 @@ class ASNRangeFilterForm(TenancyFilterForm, OrganizationalModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class ASNFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm): class ASNFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = ASN model = ASN
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -167,7 +170,7 @@ class ASNFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class RoleFilterForm(OrganizationalModelFilterSetForm): class RoleFilterForm(FilterModifierMixin, OrganizationalModelFilterSetForm):
model = Role model = Role
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -175,7 +178,7 @@ class RoleFilterForm(OrganizationalModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class PrefixFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm): class PrefixFilterForm(FilterModifierMixin, ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
model = Prefix model = Prefix
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -281,7 +284,7 @@ class PrefixFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFi
tag = TagFilterField(model) tag = TagFilterField(model)
class IPRangeFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm): class IPRangeFilterForm(FilterModifierMixin, ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
model = IPRange model = IPRange
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -328,7 +331,7 @@ class IPRangeFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelF
tag = TagFilterField(model) tag = TagFilterField(model)
class IPAddressFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm): class IPAddressFilterForm(FilterModifierMixin, ContactModelFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
model = IPAddress model = IPAddress
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -406,7 +409,7 @@ class IPAddressFilterForm(ContactModelFilterForm, TenancyFilterForm, PrimaryMode
tag = TagFilterField(model) tag = TagFilterField(model)
class FHRPGroupFilterForm(PrimaryModelFilterSetForm): class FHRPGroupFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = FHRPGroup model = FHRPGroup
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -439,7 +442,7 @@ class FHRPGroupFilterForm(PrimaryModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class VLANGroupFilterForm(TenancyFilterForm, OrganizationalModelFilterSetForm): class VLANGroupFilterForm(FilterModifierMixin, TenancyFilterForm, OrganizationalModelFilterSetForm):
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
FieldSet('region', 'site_group', 'site', 'location', 'rack', name=_('Location')), FieldSet('region', 'site_group', 'site', 'location', 'rack', name=_('Location')),
@ -492,7 +495,7 @@ class VLANGroupFilterForm(TenancyFilterForm, OrganizationalModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class VLANTranslationPolicyFilterForm(PrimaryModelFilterSetForm): class VLANTranslationPolicyFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = VLANTranslationPolicy model = VLANTranslationPolicy
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -505,7 +508,7 @@ class VLANTranslationPolicyFilterForm(PrimaryModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class VLANTranslationRuleFilterForm(NetBoxModelFilterSetForm): class VLANTranslationRuleFilterForm(FilterModifierMixin, NetBoxModelFilterSetForm):
model = VLANTranslationRule model = VLANTranslationRule
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag'), FieldSet('q', 'filter_id', 'tag'),
@ -529,7 +532,7 @@ class VLANTranslationRuleFilterForm(NetBoxModelFilterSetForm):
) )
class VLANFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm): class VLANFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = VLAN model = VLAN
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -601,7 +604,7 @@ class VLANFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model) tag = TagFilterField(model)
class ServiceTemplateFilterForm(PrimaryModelFilterSetForm): class ServiceTemplateFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = ServiceTemplate model = ServiceTemplate
fieldsets = ( fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'), FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -643,3 +646,23 @@ class ServiceFilterForm(ContactModelFilterForm, ServiceTemplateFilterForm):
label=_('FHRP Group'), label=_('FHRP Group'),
) )
tag = TagFilterField(model) tag = TagFilterField(model)
# Register FilterSet mappings for FilterModifierMixin lookup verification
FILTERSET_MAPPINGS[AggregateFilterForm] = AggregateFilterSet
FILTERSET_MAPPINGS[ASNFilterForm] = ASNFilterSet
FILTERSET_MAPPINGS[ASNRangeFilterForm] = ASNRangeFilterSet
FILTERSET_MAPPINGS[FHRPGroupFilterForm] = FHRPGroupFilterSet
FILTERSET_MAPPINGS[IPAddressFilterForm] = IPAddressFilterSet
FILTERSET_MAPPINGS[IPRangeFilterForm] = IPRangeFilterSet
FILTERSET_MAPPINGS[PrefixFilterForm] = PrefixFilterSet
FILTERSET_MAPPINGS[RIRFilterForm] = RIRFilterSet
FILTERSET_MAPPINGS[RoleFilterForm] = RoleFilterSet
FILTERSET_MAPPINGS[RouteTargetFilterForm] = RouteTargetFilterSet
FILTERSET_MAPPINGS[ServiceFilterForm] = ServiceFilterSet
FILTERSET_MAPPINGS[ServiceTemplateFilterForm] = ServiceTemplateFilterSet
FILTERSET_MAPPINGS[VLANFilterForm] = VLANFilterSet
FILTERSET_MAPPINGS[VLANGroupFilterForm] = VLANGroupFilterSet
FILTERSET_MAPPINGS[VLANTranslationPolicyFilterForm] = VLANTranslationPolicyFilterSet
FILTERSET_MAPPINGS[VLANTranslationRuleFilterForm] = VLANTranslationRuleFilterSet
FILTERSET_MAPPINGS[VRFFilterForm] = VRFFilterSet