mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-31 04:46:26 -06:00
7699 move ScopedFilterset
This commit is contained in:
parent
62358f6ead
commit
c75bfe147d
@ -73,6 +73,7 @@ __all__ = (
|
|||||||
'RearPortFilterSet',
|
'RearPortFilterSet',
|
||||||
'RearPortTemplateFilterSet',
|
'RearPortTemplateFilterSet',
|
||||||
'RegionFilterSet',
|
'RegionFilterSet',
|
||||||
|
'ScopedFilterSet',
|
||||||
'SiteFilterSet',
|
'SiteFilterSet',
|
||||||
'SiteGroupFilterSet',
|
'SiteGroupFilterSet',
|
||||||
'VirtualChassisFilterSet',
|
'VirtualChassisFilterSet',
|
||||||
@ -2331,3 +2332,60 @@ class InterfaceConnectionFilterSet(ConnectionFilterSet):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = tuple()
|
fields = tuple()
|
||||||
|
|
||||||
|
|
||||||
|
class ScopedFilterSet(BaseFilterSet):
|
||||||
|
"""
|
||||||
|
Provides additional filtering functionality for location, site, etc.. for Scoped models.
|
||||||
|
"""
|
||||||
|
scope_type = ContentTypeFilter()
|
||||||
|
region_id = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=Region.objects.all(),
|
||||||
|
field_name='_region',
|
||||||
|
lookup_expr='in',
|
||||||
|
label=_('Region (ID)'),
|
||||||
|
)
|
||||||
|
region = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=Region.objects.all(),
|
||||||
|
field_name='_region',
|
||||||
|
lookup_expr='in',
|
||||||
|
to_field_name='slug',
|
||||||
|
label=_('Region (slug)'),
|
||||||
|
)
|
||||||
|
site_group_id = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=SiteGroup.objects.all(),
|
||||||
|
field_name='_sitegroup',
|
||||||
|
lookup_expr='in',
|
||||||
|
label=_('Site group (ID)'),
|
||||||
|
)
|
||||||
|
site_group = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=SiteGroup.objects.all(),
|
||||||
|
field_name='_sitegroup',
|
||||||
|
lookup_expr='in',
|
||||||
|
to_field_name='slug',
|
||||||
|
label=_('Site group (slug)'),
|
||||||
|
)
|
||||||
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
queryset=Site.objects.all(),
|
||||||
|
field_name='_site',
|
||||||
|
label=_('Site (ID)'),
|
||||||
|
)
|
||||||
|
site = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
field_name='_site__slug',
|
||||||
|
queryset=Site.objects.all(),
|
||||||
|
to_field_name='slug',
|
||||||
|
label=_('Site (slug)'),
|
||||||
|
)
|
||||||
|
location_id = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=Location.objects.all(),
|
||||||
|
field_name='_location',
|
||||||
|
lookup_expr='in',
|
||||||
|
label=_('Location (ID)'),
|
||||||
|
)
|
||||||
|
location = TreeNodeMultipleChoiceFilter(
|
||||||
|
queryset=Location.objects.all(),
|
||||||
|
field_name='_location',
|
||||||
|
lookup_expr='in',
|
||||||
|
to_field_name='slug',
|
||||||
|
label=_('Location (slug)'),
|
||||||
|
)
|
||||||
|
@ -9,7 +9,6 @@ from django.utils.translation import gettext as _
|
|||||||
|
|
||||||
from core.choices import ObjectChangeActionChoices
|
from core.choices import ObjectChangeActionChoices
|
||||||
from core.models import ObjectChange
|
from core.models import ObjectChange
|
||||||
from dcim.models import Location, Region, Site, SiteGroup
|
|
||||||
from extras.choices import CustomFieldFilterLogicChoices
|
from extras.choices import CustomFieldFilterLogicChoices
|
||||||
from extras.filters import TagFilter
|
from extras.filters import TagFilter
|
||||||
from extras.models import CustomField, SavedFilter
|
from extras.models import CustomField, SavedFilter
|
||||||
@ -25,7 +24,6 @@ __all__ = (
|
|||||||
'ChangeLoggedModelFilterSet',
|
'ChangeLoggedModelFilterSet',
|
||||||
'NetBoxModelFilterSet',
|
'NetBoxModelFilterSet',
|
||||||
'OrganizationalModelFilterSet',
|
'OrganizationalModelFilterSet',
|
||||||
'ScopedFilterSet',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -327,60 +325,3 @@ class OrganizationalModelFilterSet(NetBoxModelFilterSet):
|
|||||||
models.Q(slug__icontains=value) |
|
models.Q(slug__icontains=value) |
|
||||||
models.Q(description__icontains=value)
|
models.Q(description__icontains=value)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ScopedFilterSet(BaseFilterSet):
|
|
||||||
"""
|
|
||||||
Provides additional filtering functionality for location, site, etc.. for Scoped models.
|
|
||||||
"""
|
|
||||||
scope_type = filters.ContentTypeFilter()
|
|
||||||
region_id = filters.TreeNodeMultipleChoiceFilter(
|
|
||||||
queryset=Region.objects.all(),
|
|
||||||
field_name='_region',
|
|
||||||
lookup_expr='in',
|
|
||||||
label=_('Region (ID)'),
|
|
||||||
)
|
|
||||||
region = filters.TreeNodeMultipleChoiceFilter(
|
|
||||||
queryset=Region.objects.all(),
|
|
||||||
field_name='_region',
|
|
||||||
lookup_expr='in',
|
|
||||||
to_field_name='slug',
|
|
||||||
label=_('Region (slug)'),
|
|
||||||
)
|
|
||||||
site_group_id = filters.TreeNodeMultipleChoiceFilter(
|
|
||||||
queryset=SiteGroup.objects.all(),
|
|
||||||
field_name='_sitegroup',
|
|
||||||
lookup_expr='in',
|
|
||||||
label=_('Site group (ID)'),
|
|
||||||
)
|
|
||||||
site_group = filters.TreeNodeMultipleChoiceFilter(
|
|
||||||
queryset=SiteGroup.objects.all(),
|
|
||||||
field_name='_sitegroup',
|
|
||||||
lookup_expr='in',
|
|
||||||
to_field_name='slug',
|
|
||||||
label=_('Site group (slug)'),
|
|
||||||
)
|
|
||||||
site_id = django_filters.ModelMultipleChoiceFilter(
|
|
||||||
queryset=Site.objects.all(),
|
|
||||||
field_name='_site',
|
|
||||||
label=_('Site (ID)'),
|
|
||||||
)
|
|
||||||
site = django_filters.ModelMultipleChoiceFilter(
|
|
||||||
field_name='_site__slug',
|
|
||||||
queryset=Site.objects.all(),
|
|
||||||
to_field_name='slug',
|
|
||||||
label=_('Site (slug)'),
|
|
||||||
)
|
|
||||||
location_id = filters.TreeNodeMultipleChoiceFilter(
|
|
||||||
queryset=Location.objects.all(),
|
|
||||||
field_name='_location',
|
|
||||||
lookup_expr='in',
|
|
||||||
label=_('Location (ID)'),
|
|
||||||
)
|
|
||||||
location = filters.TreeNodeMultipleChoiceFilter(
|
|
||||||
queryset=Location.objects.all(),
|
|
||||||
field_name='_location',
|
|
||||||
lookup_expr='in',
|
|
||||||
to_field_name='slug',
|
|
||||||
label=_('Location (slug)'),
|
|
||||||
)
|
|
||||||
|
@ -2,12 +2,12 @@ import django_filters
|
|||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from dcim.filtersets import CommonInterfaceFilterSet
|
from dcim.filtersets import CommonInterfaceFilterSet, ScopedFilterSet
|
||||||
from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup
|
from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup
|
||||||
from extras.filtersets import LocalConfigContextFilterSet
|
from extras.filtersets import LocalConfigContextFilterSet
|
||||||
from extras.models import ConfigTemplate
|
from extras.models import ConfigTemplate
|
||||||
from ipam.filtersets import PrimaryIPFilterSet
|
from ipam.filtersets import PrimaryIPFilterSet
|
||||||
from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet, ScopedFilterSet
|
from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet
|
||||||
from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet
|
from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet
|
||||||
from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter
|
from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter
|
||||||
from .choices import *
|
from .choices import *
|
||||||
|
Loading…
Reference in New Issue
Block a user