diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 128cc4d8b..32445a71d 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -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