|
@@ -7,7 +7,7 @@ from netaddr import EUI
|
|
|
from netaddr.core import AddrFormatError
|
|
from netaddr.core import AddrFormatError
|
|
|
|
|
|
|
|
from extras.filters import CustomFieldFilterSet
|
|
from extras.filters import CustomFieldFilterSet
|
|
|
-from tenancy.models import Tenant
|
|
|
|
|
|
|
+from tenancy.filterset import TenancyFilterSet
|
|
|
from utilities.constants import COLOR_CHOICES
|
|
from utilities.constants import COLOR_CHOICES
|
|
|
from utilities.filters import (
|
|
from utilities.filters import (
|
|
|
NameSlugSearchFilterSet, NullableCharFieldFilter, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
|
|
NameSlugSearchFilterSet, NullableCharFieldFilter, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
|
|
@@ -39,7 +39,7 @@ class RegionFilter(NameSlugSearchFilterSet):
|
|
|
fields = ['name', 'slug']
|
|
fields = ['name', 'slug']
|
|
|
|
|
|
|
|
|
|
|
|
|
-class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
|
|
|
|
+class SiteFilter(TenancyFilterSet, CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
id__in = NumericInFilter(
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
lookup_expr='in'
|
|
@@ -63,16 +63,6 @@ class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
to_field_name='slug',
|
|
to_field_name='slug',
|
|
|
label='Region (slug)',
|
|
label='Region (slug)',
|
|
|
)
|
|
)
|
|
|
- tenant_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- label='Tenant (ID)',
|
|
|
|
|
- )
|
|
|
|
|
- tenant = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- field_name='tenant__slug',
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- to_field_name='slug',
|
|
|
|
|
- label='Tenant (slug)',
|
|
|
|
|
- )
|
|
|
|
|
tag = TagFilter()
|
|
tag = TagFilter()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
@@ -124,7 +114,7 @@ class RackRoleFilter(NameSlugSearchFilterSet):
|
|
|
fields = ['name', 'slug', 'color']
|
|
fields = ['name', 'slug', 'color']
|
|
|
|
|
|
|
|
|
|
|
|
|
-class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
|
|
|
|
+class RackFilter(TenancyFilterSet, CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
id__in = NumericInFilter(
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
lookup_expr='in'
|
|
@@ -154,16 +144,6 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
to_field_name='slug',
|
|
to_field_name='slug',
|
|
|
label='Group',
|
|
label='Group',
|
|
|
)
|
|
)
|
|
|
- tenant_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- label='Tenant (ID)',
|
|
|
|
|
- )
|
|
|
|
|
- tenant = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- field_name='tenant__slug',
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- to_field_name='slug',
|
|
|
|
|
- label='Tenant (slug)',
|
|
|
|
|
- )
|
|
|
|
|
status = django_filters.MultipleChoiceFilter(
|
|
status = django_filters.MultipleChoiceFilter(
|
|
|
choices=RACK_STATUS_CHOICES,
|
|
choices=RACK_STATUS_CHOICES,
|
|
|
null_value=None
|
|
null_value=None
|
|
@@ -200,7 +180,7 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
-class RackReservationFilter(django_filters.FilterSet):
|
|
|
|
|
|
|
+class RackReservationFilter(TenancyFilterSet, django_filters.FilterSet):
|
|
|
id__in = NumericInFilter(
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
lookup_expr='in'
|
|
@@ -235,16 +215,6 @@ class RackReservationFilter(django_filters.FilterSet):
|
|
|
to_field_name='slug',
|
|
to_field_name='slug',
|
|
|
label='Group',
|
|
label='Group',
|
|
|
)
|
|
)
|
|
|
- tenant_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- label='Tenant (ID)',
|
|
|
|
|
- )
|
|
|
|
|
- tenant = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- field_name='tenant__slug',
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- to_field_name='slug',
|
|
|
|
|
- label='Tenant (slug)',
|
|
|
|
|
- )
|
|
|
|
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
queryset=User.objects.all(),
|
|
queryset=User.objects.all(),
|
|
|
label='User (ID)',
|
|
label='User (ID)',
|
|
@@ -450,7 +420,7 @@ class PlatformFilter(NameSlugSearchFilterSet):
|
|
|
fields = ['name', 'slug']
|
|
fields = ['name', 'slug']
|
|
|
|
|
|
|
|
|
|
|
|
|
-class DeviceFilter(CustomFieldFilterSet):
|
|
|
|
|
|
|
+class DeviceFilter(TenancyFilterSet, CustomFieldFilterSet):
|
|
|
id__in = NumericInFilter(
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
lookup_expr='in'
|
|
@@ -485,16 +455,6 @@ class DeviceFilter(CustomFieldFilterSet):
|
|
|
to_field_name='slug',
|
|
to_field_name='slug',
|
|
|
label='Role (slug)',
|
|
label='Role (slug)',
|
|
|
)
|
|
)
|
|
|
- tenant_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- label='Tenant (ID)',
|
|
|
|
|
- )
|
|
|
|
|
- tenant = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- field_name='tenant__slug',
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- to_field_name='slug',
|
|
|
|
|
- label='Tenant (slug)',
|
|
|
|
|
- )
|
|
|
|
|
platform_id = django_filters.ModelMultipleChoiceFilter(
|
|
platform_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
queryset=Platform.objects.all(),
|
|
queryset=Platform.objects.all(),
|
|
|
label='Platform (ID)',
|
|
label='Platform (ID)',
|
|
@@ -915,7 +875,7 @@ class InventoryItemFilter(DeviceComponentFilterSet):
|
|
|
return queryset.filter(qs_filter)
|
|
return queryset.filter(qs_filter)
|
|
|
|
|
|
|
|
|
|
|
|
|
-class VirtualChassisFilter(django_filters.FilterSet):
|
|
|
|
|
|
|
+class VirtualChassisFilter(TenancyFilterSet, django_filters.FilterSet):
|
|
|
q = django_filters.CharFilter(
|
|
q = django_filters.CharFilter(
|
|
|
method='search',
|
|
method='search',
|
|
|
label='Search',
|
|
label='Search',
|
|
@@ -931,17 +891,6 @@ class VirtualChassisFilter(django_filters.FilterSet):
|
|
|
to_field_name='slug',
|
|
to_field_name='slug',
|
|
|
label='Site name (slug)',
|
|
label='Site name (slug)',
|
|
|
)
|
|
)
|
|
|
- tenant_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- field_name='master__tenant',
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- label='Tenant (ID)',
|
|
|
|
|
- )
|
|
|
|
|
- tenant = django_filters.ModelMultipleChoiceFilter(
|
|
|
|
|
- field_name='master__tenant__slug',
|
|
|
|
|
- queryset=Tenant.objects.all(),
|
|
|
|
|
- to_field_name='slug',
|
|
|
|
|
- label='Tenant (slug)',
|
|
|
|
|
- )
|
|
|
|
|
tag = TagFilter()
|
|
tag = TagFilter()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|