mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-31 04:46:26 -06:00
7699 scoped form, fitlerset
This commit is contained in:
parent
8ca7cdd0ad
commit
277b175f9f
@ -25,6 +25,7 @@ __all__ = (
|
|||||||
'ChangeLoggedModelFilterSet',
|
'ChangeLoggedModelFilterSet',
|
||||||
'NetBoxModelFilterSet',
|
'NetBoxModelFilterSet',
|
||||||
'OrganizationalModelFilterSet',
|
'OrganizationalModelFilterSet',
|
||||||
|
'ScopedFilterSet',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -328,7 +329,7 @@ class OrganizationalModelFilterSet(NetBoxModelFilterSet):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ScopeModelFilterSet(BaseFilterSet):
|
class ScopedFilterSet(BaseFilterSet):
|
||||||
"""
|
"""
|
||||||
Provides additional filtering functionality for location, site, etc.. for Scoped models.
|
Provides additional filtering functionality for location, site, etc.. for Scoped models.
|
||||||
"""
|
"""
|
||||||
|
@ -20,7 +20,7 @@ __all__ = (
|
|||||||
'NetBoxModelImportForm',
|
'NetBoxModelImportForm',
|
||||||
'NetBoxModelBulkEditForm',
|
'NetBoxModelBulkEditForm',
|
||||||
'NetBoxModelFilterSetForm',
|
'NetBoxModelFilterSetForm',
|
||||||
'ScopeForm',
|
'ScopedForm',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ class NetBoxModelFilterSetForm(CustomFieldsMixin, SavedFiltersMixin, forms.Form)
|
|||||||
return customfield.to_form_field(set_initial=False, enforce_required=False, enforce_visibility=False)
|
return customfield.to_form_field(set_initial=False, enforce_required=False, enforce_visibility=False)
|
||||||
|
|
||||||
|
|
||||||
class ScopeForm(forms.Form):
|
class ScopedForm(forms.Form):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
instance = kwargs.get('instance')
|
instance = kwargs.get('instance')
|
||||||
|
@ -3,13 +3,13 @@ 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
|
||||||
from dcim.models import Device, DeviceRole, Platform, Location, 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
|
from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet, ScopedFilterSet
|
||||||
from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet
|
from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet
|
||||||
from utilities.filters import ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter
|
from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter
|
||||||
from .choices import *
|
from .choices import *
|
||||||
from .models import *
|
from .models import *
|
||||||
|
|
||||||
@ -37,58 +37,7 @@ class ClusterGroupFilterSet(OrganizationalModelFilterSet, ContactModelFilterSet)
|
|||||||
fields = ('id', 'name', 'slug', 'description')
|
fields = ('id', 'name', 'slug', 'description')
|
||||||
|
|
||||||
|
|
||||||
class ClusterFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSet):
|
class ClusterFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ScopedFilterSet, ContactModelFilterSet):
|
||||||
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)'),
|
|
||||||
)
|
|
||||||
group_id = django_filters.ModelMultipleChoiceFilter(
|
group_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=ClusterGroup.objects.all(),
|
queryset=ClusterGroup.objects.all(),
|
||||||
label=_('Parent group (ID)'),
|
label=_('Parent group (ID)'),
|
||||||
|
@ -7,7 +7,7 @@ from dcim.forms.common import InterfaceCommonForm
|
|||||||
from dcim.models import Device, DeviceRole, Platform, Rack, Region, Site, SiteGroup
|
from dcim.models import Device, DeviceRole, Platform, Rack, Region, Site, SiteGroup
|
||||||
from extras.models import ConfigTemplate
|
from extras.models import ConfigTemplate
|
||||||
from ipam.models import IPAddress, VLAN, VLANGroup, VRF
|
from ipam.models import IPAddress, VLAN, VLANGroup, VRF
|
||||||
from netbox.forms import NetBoxModelForm, ScopeForm
|
from netbox.forms import NetBoxModelForm, ScopedForm
|
||||||
from tenancy.forms import TenancyForm
|
from tenancy.forms import TenancyForm
|
||||||
from utilities.forms import ConfirmationForm
|
from utilities.forms import ConfirmationForm
|
||||||
from utilities.forms.fields import (
|
from utilities.forms.fields import (
|
||||||
@ -59,7 +59,7 @@ class ClusterGroupForm(NetBoxModelForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ClusterForm(TenancyForm, ScopeForm, NetBoxModelForm):
|
class ClusterForm(TenancyForm, ScopedForm, NetBoxModelForm):
|
||||||
type = DynamicModelChoiceField(
|
type = DynamicModelChoiceField(
|
||||||
label=_('Type'),
|
label=_('Type'),
|
||||||
queryset=ClusterType.objects.all()
|
queryset=ClusterType.objects.all()
|
||||||
|
Loading…
Reference in New Issue
Block a user