diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index faf29584f..e48454a05 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -7,11 +7,11 @@ from dcim.filtersets import CabledObjectFilterSet from dcim.models import Interface, Location, Region, Site, SiteGroup from ipam.models import ASN from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet +from netbox.plugins.registration import register_filterset from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter, TreeNodeMultipleChoiceFilter, ) -from utilities.filtersets import register_filterset from .choices import * from .models import * diff --git a/netbox/core/filtersets.py b/netbox/core/filtersets.py index a531c051e..3b9d15841 100644 --- a/netbox/core/filtersets.py +++ b/netbox/core/filtersets.py @@ -4,10 +4,10 @@ from django.db.models import Q from django.utils.translation import gettext as _ from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, PrimaryModelFilterSet +from netbox.plugins.registration import register_filterset from netbox.utils import get_data_backend_choices from users.models import User from utilities.filters import ContentTypeFilter -from utilities.filtersets import register_filterset from .choices import * from .models import * diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index a3f8ff383..5c26e391f 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -14,6 +14,7 @@ from netbox.filtersets import ( AttributeFiltersMixin, BaseFilterSet, ChangeLoggedModelFilterSet, NestedGroupModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet, NetBoxModelFilterSet, ) +from netbox.plugins.registration import register_filterset from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet from tenancy.models import * from users.filterset_mixins import OwnerFilterMixin @@ -22,7 +23,6 @@ from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, MultiValueNumberFilter, MultiValueWWNFilter, NumericArrayFilter, TreeNodeMultipleChoiceFilter, ) -from utilities.filtersets import register_filterset from virtualization.models import Cluster, ClusterGroup, VirtualMachine, VMInterface from vpn.models import L2VPN from wireless.choices import WirelessChannelChoices, WirelessRoleChoices diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index cdc0c75c5..d196f9c9d 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -6,13 +6,13 @@ from django.utils.translation import gettext as _ from core.models import DataSource, ObjectType from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, NetBoxModelFilterSet, PrimaryModelFilterSet +from netbox.plugins.registration import register_filterset from tenancy.models import Tenant, TenantGroup from users.filterset_mixins import OwnerFilterMixin from users.models import Group, User from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter ) -from utilities.filtersets import register_filterset from virtualization.models import Cluster, ClusterGroup, ClusterType from .choices import * from .filters import TagFilter, TagIDFilter diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index ad2e032e2..0be28685f 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -14,12 +14,11 @@ from dcim.models import Device, Interface, Region, Site, SiteGroup from netbox.filtersets import ( ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet, PrimaryModelFilterSet, ) +from netbox.plugins.registration import register_filterset from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet - from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter, NumericArrayFilter, TreeNodeMultipleChoiceFilter, ) -from utilities.filtersets import register_filterset from virtualization.models import VirtualMachine, VMInterface from vpn.models import L2VPN from .choices import * diff --git a/netbox/netbox/plugins/registration.py b/netbox/netbox/plugins/registration.py index 0001d50c9..3bd24c1b0 100644 --- a/netbox/netbox/plugins/registration.py +++ b/netbox/netbox/plugins/registration.py @@ -7,6 +7,7 @@ from .navigation import PluginMenu, PluginMenuButton, PluginMenuItem from .templates import PluginTemplateExtension __all__ = ( + 'register_filterset', 'register_graphql_schema', 'register_menu', 'register_menu_items', @@ -44,6 +45,18 @@ def register_template_extensions(class_list): registry['plugins']['template_extensions'][model].append(template_extension) +def register_filterset(filterset_class): + """ + Decorator for registering a FilterSet with the application registry. + + Uses model identifier as key to match search index pattern. + """ + model = filterset_class._meta.model + label = f'{model._meta.app_label}.{model._meta.model_name}' + registry['filtersets'][label] = filterset_class + return filterset_class + + def register_menu(menu): if not isinstance(menu, PluginMenu): raise TypeError(_("{item} must be an instance of netbox.plugins.PluginMenuItem").format(item=menu)) diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index aa463ef50..983f6d255 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -5,8 +5,8 @@ from django.utils.translation import gettext as _ from netbox.filtersets import ( NestedGroupModelFilterSet, NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet, ) +from netbox.plugins.registration import register_filterset from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter -from utilities.filtersets import register_filterset from .models import * __all__ = ( diff --git a/netbox/users/filtersets.py b/netbox/users/filtersets.py index b72ed257a..88eec8a18 100644 --- a/netbox/users/filtersets.py +++ b/netbox/users/filtersets.py @@ -6,9 +6,9 @@ from django.utils.translation import gettext as _ from core.models import ObjectType from extras.models import NotificationGroup from netbox.filtersets import BaseFilterSet +from netbox.plugins.registration import register_filterset from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User from utilities.filters import ContentTypeFilter -from utilities.filtersets import register_filterset __all__ = ( 'GroupFilterSet', diff --git a/netbox/utilities/filtersets.py b/netbox/utilities/filtersets.py index b5a0005f6..e69de29bb 100644 --- a/netbox/utilities/filtersets.py +++ b/netbox/utilities/filtersets.py @@ -1,13 +0,0 @@ -from netbox.registry import registry - - -def register_filterset(filterset_class): - """ - Decorator for registering a FilterSet with the application registry. - - Uses model identifier as key to match search index pattern. - """ - model = filterset_class._meta.model - label = f'{model._meta.app_label}.{model._meta.model_name}' - registry['filtersets'][label] = filterset_class - return filterset_class diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index 4f7b28066..57330c3d2 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -10,11 +10,10 @@ from extras.filtersets import LocalConfigContextFilterSet from extras.models import ConfigTemplate from ipam.filtersets import PrimaryIPFilterSet from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet +from netbox.plugins.registration import register_filterset from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet - from users.filterset_mixins import OwnerFilterMixin from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter -from utilities.filtersets import register_filterset from .choices import * from .models import * diff --git a/netbox/vpn/filtersets.py b/netbox/vpn/filtersets.py index e6fcd87fc..d563dcf96 100644 --- a/netbox/vpn/filtersets.py +++ b/netbox/vpn/filtersets.py @@ -6,9 +6,9 @@ from core.models import ObjectType from dcim.models import Device, Interface from ipam.models import IPAddress, RouteTarget, VLAN from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet +from netbox.plugins.registration import register_filterset from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet from utilities.filters import ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter -from utilities.filtersets import register_filterset from virtualization.models import VirtualMachine, VMInterface from .choices import * from .models import * diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index 288a99ce5..a715d2d68 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -6,9 +6,9 @@ from dcim.base_filtersets import ScopedFilterSet from dcim.models import Interface from ipam.models import VLAN from netbox.filtersets import NestedGroupModelFilterSet, PrimaryModelFilterSet +from netbox.plugins.registration import register_filterset from tenancy.filtersets import TenancyFilterSet from utilities.filters import TreeNodeMultipleChoiceFilter -from utilities.filtersets import register_filterset from .choices import * from .models import *