Enable filter form modifiers on DCIM models

This commit is contained in:
Jason Novinger 2025-11-07 15:42:24 -06:00
parent aeb6024502
commit 8d191b5d5b

View File

@ -3,7 +3,7 @@ from django.utils.translation import gettext_lazy as _
from dcim.choices import *
from dcim.constants import *
from dcim.filtersets import DeviceFilterSet, PowerOutletFilterSet, RackFilterSet
from dcim.filtersets import *
from dcim.models import *
from extras.forms import LocalConfigContextFilterForm
from extras.models import ConfigTemplate
@ -150,7 +150,7 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm):
)
class RegionFilterForm(ContactModelFilterForm, NestedGroupModelFilterSetForm):
class RegionFilterForm(FilterModifierMixin, ContactModelFilterForm, NestedGroupModelFilterSetForm):
model = Region
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -165,7 +165,7 @@ class RegionFilterForm(ContactModelFilterForm, NestedGroupModelFilterSetForm):
tag = TagFilterField(model)
class SiteGroupFilterForm(ContactModelFilterForm, NestedGroupModelFilterSetForm):
class SiteGroupFilterForm(FilterModifierMixin, ContactModelFilterForm, NestedGroupModelFilterSetForm):
model = SiteGroup
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -180,7 +180,7 @@ class SiteGroupFilterForm(ContactModelFilterForm, NestedGroupModelFilterSetForm)
tag = TagFilterField(model)
class SiteFilterForm(TenancyFilterForm, ContactModelFilterForm, PrimaryModelFilterSetForm):
class SiteFilterForm(FilterModifierMixin, TenancyFilterForm, ContactModelFilterForm, PrimaryModelFilterSetForm):
model = Site
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -212,7 +212,7 @@ class SiteFilterForm(TenancyFilterForm, ContactModelFilterForm, PrimaryModelFilt
tag = TagFilterField(model)
class LocationFilterForm(TenancyFilterForm, ContactModelFilterForm, NestedGroupModelFilterSetForm):
class LocationFilterForm(FilterModifierMixin, TenancyFilterForm, ContactModelFilterForm, NestedGroupModelFilterSetForm):
model = Location
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -260,7 +260,7 @@ class LocationFilterForm(TenancyFilterForm, ContactModelFilterForm, NestedGroupM
tag = TagFilterField(model)
class RackRoleFilterForm(OrganizationalModelFilterSetForm):
class RackRoleFilterForm(FilterModifierMixin, OrganizationalModelFilterSetForm):
model = RackRole
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -311,7 +311,7 @@ class RackBaseFilterForm(PrimaryModelFilterSetForm):
)
class RackTypeFilterForm(RackBaseFilterForm):
class RackTypeFilterForm(FilterModifierMixin, RackBaseFilterForm):
model = RackType
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -434,7 +434,7 @@ class RackElevationFilterForm(RackFilterForm):
)
class RackReservationFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
class RackReservationFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = RackReservation
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -492,7 +492,7 @@ class RackReservationFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model)
class ManufacturerFilterForm(ContactModelFilterForm, OrganizationalModelFilterSetForm):
class ManufacturerFilterForm(FilterModifierMixin, ContactModelFilterForm, OrganizationalModelFilterSetForm):
model = Manufacturer
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -501,7 +501,7 @@ class ManufacturerFilterForm(ContactModelFilterForm, OrganizationalModelFilterSe
tag = TagFilterField(model)
class DeviceTypeFilterForm(PrimaryModelFilterSetForm):
class DeviceTypeFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = DeviceType
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -635,15 +635,16 @@ class DeviceTypeFilterForm(PrimaryModelFilterSetForm):
)
class ModuleTypeProfileFilterForm(PrimaryModelFilterSetForm):
class ModuleTypeProfileFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = ModuleTypeProfile
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
)
selector_fields = ('filter_id', 'q')
tag = TagFilterField(model)
class ModuleTypeFilterForm(PrimaryModelFilterSetForm):
class ModuleTypeFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = ModuleType
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -736,7 +737,7 @@ class ModuleTypeFilterForm(PrimaryModelFilterSetForm):
)
class DeviceRoleFilterForm(NestedGroupModelFilterSetForm):
class DeviceRoleFilterForm(FilterModifierMixin, NestedGroupModelFilterSetForm):
model = DeviceRole
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -755,7 +756,7 @@ class DeviceRoleFilterForm(NestedGroupModelFilterSetForm):
tag = TagFilterField(model)
class PlatformFilterForm(NestedGroupModelFilterSetForm):
class PlatformFilterForm(FilterModifierMixin, NestedGroupModelFilterSetForm):
model = Platform
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -979,7 +980,7 @@ class DeviceFilterForm(
tag = TagFilterField(model)
class VirtualDeviceContextFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
class VirtualDeviceContextFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = VirtualDeviceContext
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1006,7 +1007,7 @@ class VirtualDeviceContextFilterForm(TenancyFilterForm, PrimaryModelFilterSetFor
tag = TagFilterField(model)
class ModuleFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
class ModuleFilterForm(FilterModifierMixin, LocalConfigContextFilterForm, TenancyFilterForm, PrimaryModelFilterSetForm):
model = Module
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1089,7 +1090,7 @@ class ModuleFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, PrimaryM
tag = TagFilterField(model)
class VirtualChassisFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
class VirtualChassisFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = VirtualChassis
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1118,7 +1119,7 @@ class VirtualChassisFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model)
class CableFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
class CableFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = Cable
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1207,7 +1208,7 @@ class CableFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model)
class PowerPanelFilterForm(ContactModelFilterForm, PrimaryModelFilterSetForm):
class PowerPanelFilterForm(FilterModifierMixin, ContactModelFilterForm, PrimaryModelFilterSetForm):
model = PowerPanel
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1246,7 +1247,7 @@ class PowerPanelFilterForm(ContactModelFilterForm, PrimaryModelFilterSetForm):
tag = TagFilterField(model)
class PowerFeedFilterForm(TenancyFilterForm, PrimaryModelFilterSetForm):
class PowerFeedFilterForm(FilterModifierMixin, TenancyFilterForm, PrimaryModelFilterSetForm):
model = PowerFeed
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1356,7 +1357,7 @@ class PathEndpointFilterForm(CabledFilterForm):
)
class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
class ConsolePortFilterForm(FilterModifierMixin, PathEndpointFilterForm, DeviceComponentFilterForm):
model = ConsolePort
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1380,7 +1381,7 @@ class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
tag = TagFilterField(model)
class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
class ConsoleServerPortFilterForm(FilterModifierMixin, PathEndpointFilterForm, DeviceComponentFilterForm):
model = ConsoleServerPort
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1405,7 +1406,7 @@ class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterF
tag = TagFilterField(model)
class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
class PowerPortFilterForm(FilterModifierMixin, PathEndpointFilterForm, DeviceComponentFilterForm):
model = PowerPort
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1453,7 +1454,7 @@ class PowerOutletFilterForm(FilterModifierMixin, PathEndpointFilterForm, DeviceC
)
class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
class InterfaceFilterForm(FilterModifierMixin, PathEndpointFilterForm, DeviceComponentFilterForm):
model = Interface
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1579,7 +1580,7 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm):
tag = TagFilterField(model)
class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
class FrontPortFilterForm(FilterModifierMixin, CabledFilterForm, DeviceComponentFilterForm):
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
FieldSet('name', 'label', 'type', 'color', name=_('Attributes')),
@ -1602,7 +1603,7 @@ class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
tag = TagFilterField(model)
class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
class RearPortFilterForm(FilterModifierMixin, CabledFilterForm, DeviceComponentFilterForm):
model = RearPort
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1626,7 +1627,7 @@ class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm):
tag = TagFilterField(model)
class ModuleBayFilterForm(DeviceComponentFilterForm):
class ModuleBayFilterForm(FilterModifierMixin, DeviceComponentFilterForm):
model = ModuleBay
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1644,7 +1645,7 @@ class ModuleBayFilterForm(DeviceComponentFilterForm):
)
class DeviceBayFilterForm(DeviceComponentFilterForm):
class DeviceBayFilterForm(FilterModifierMixin, DeviceComponentFilterForm):
model = DeviceBay
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1658,7 +1659,7 @@ class DeviceBayFilterForm(DeviceComponentFilterForm):
tag = TagFilterField(model)
class InventoryItemFilterForm(DeviceComponentFilterForm):
class InventoryItemFilterForm(FilterModifierMixin, DeviceComponentFilterForm):
model = InventoryItem
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1709,7 +1710,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
# Device component roles
#
class InventoryItemRoleFilterForm(OrganizationalModelFilterSetForm):
class InventoryItemRoleFilterForm(FilterModifierMixin, OrganizationalModelFilterSetForm):
model = InventoryItemRole
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1721,7 +1722,7 @@ class InventoryItemRoleFilterForm(OrganizationalModelFilterSetForm):
# Addressing
#
class MACAddressFilterForm(PrimaryModelFilterSetForm):
class MACAddressFilterForm(FilterModifierMixin, PrimaryModelFilterSetForm):
model = MACAddress
fieldsets = (
FieldSet('q', 'filter_id', 'tag', 'owner_id'),
@ -1837,6 +1838,36 @@ class InterfaceConnectionFilterForm(FilterForm):
# Register FilterSet mappings for FilterModifierMixin lookup verification
FILTERSET_MAPPINGS[CableFilterForm] = CableFilterSet
FILTERSET_MAPPINGS[ConsolePortFilterForm] = ConsolePortFilterSet
FILTERSET_MAPPINGS[ConsoleServerPortFilterForm] = ConsoleServerPortFilterSet
FILTERSET_MAPPINGS[DeviceBayFilterForm] = DeviceBayFilterSet
FILTERSET_MAPPINGS[DeviceFilterForm] = DeviceFilterSet
FILTERSET_MAPPINGS[RackFilterForm] = RackFilterSet
FILTERSET_MAPPINGS[DeviceRoleFilterForm] = DeviceRoleFilterSet
FILTERSET_MAPPINGS[DeviceTypeFilterForm] = DeviceTypeFilterSet
FILTERSET_MAPPINGS[FrontPortFilterForm] = FrontPortFilterSet
FILTERSET_MAPPINGS[InterfaceFilterForm] = InterfaceFilterSet
FILTERSET_MAPPINGS[InventoryItemFilterForm] = InventoryItemFilterSet
FILTERSET_MAPPINGS[InventoryItemRoleFilterForm] = InventoryItemRoleFilterSet
FILTERSET_MAPPINGS[LocationFilterForm] = LocationFilterSet
FILTERSET_MAPPINGS[MACAddressFilterForm] = MACAddressFilterSet
FILTERSET_MAPPINGS[ManufacturerFilterForm] = ManufacturerFilterSet
FILTERSET_MAPPINGS[ModuleBayFilterForm] = ModuleBayFilterSet
FILTERSET_MAPPINGS[ModuleFilterForm] = ModuleFilterSet
FILTERSET_MAPPINGS[ModuleTypeFilterForm] = ModuleTypeFilterSet
FILTERSET_MAPPINGS[ModuleTypeProfileFilterForm] = ModuleTypeProfileFilterSet
FILTERSET_MAPPINGS[PlatformFilterForm] = PlatformFilterSet
FILTERSET_MAPPINGS[PowerFeedFilterForm] = PowerFeedFilterSet
FILTERSET_MAPPINGS[PowerOutletFilterForm] = PowerOutletFilterSet
FILTERSET_MAPPINGS[PowerPanelFilterForm] = PowerPanelFilterSet
FILTERSET_MAPPINGS[PowerPortFilterForm] = PowerPortFilterSet
FILTERSET_MAPPINGS[RackFilterForm] = RackFilterSet
FILTERSET_MAPPINGS[RackReservationFilterForm] = RackReservationFilterSet
FILTERSET_MAPPINGS[RackRoleFilterForm] = RackRoleFilterSet
FILTERSET_MAPPINGS[RackTypeFilterForm] = RackTypeFilterSet
FILTERSET_MAPPINGS[RearPortFilterForm] = RearPortFilterSet
FILTERSET_MAPPINGS[RegionFilterForm] = RegionFilterSet
FILTERSET_MAPPINGS[SiteFilterForm] = SiteFilterSet
FILTERSET_MAPPINGS[SiteGroupFilterForm] = SiteGroupFilterSet
FILTERSET_MAPPINGS[VirtualChassisFilterForm] = VirtualChassisFilterSet
FILTERSET_MAPPINGS[VirtualDeviceContextFilterForm] = VirtualDeviceContextFilterSet