|
|
@@ -6,7 +6,7 @@ from netaddr import EUI
|
|
|
from netaddr.core import AddrFormatError
|
|
|
|
|
|
from extras.filters import CustomFieldFilterSet
|
|
|
-from tenancy.models import Tenant, TenantGroup
|
|
|
+from tenancy.filters import TenancyFilterSet
|
|
|
from utilities.constants import COLOR_CHOICES
|
|
|
from utilities.filters import NameSlugSearchFilterSet, NullableCharFieldFilter, NumericInFilter, TagFilter
|
|
|
from virtualization.models import Cluster
|
|
|
@@ -36,7 +36,7 @@ class RegionFilter(NameSlugSearchFilterSet):
|
|
|
fields = ['name', 'slug']
|
|
|
|
|
|
|
|
|
-class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
+class SiteFilter(TenancyFilterSet, CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
|
@@ -59,28 +59,6 @@ class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
field_name='slug',
|
|
|
label='Region (slug)',
|
|
|
)
|
|
|
- tenant_group_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__id',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='id',
|
|
|
- label='Tenant Group (ID)',
|
|
|
- )
|
|
|
- tenant_group = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__slug',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='slug',
|
|
|
- label='Tenant Group (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()
|
|
|
|
|
|
class Meta:
|
|
|
@@ -142,7 +120,7 @@ class RackRoleFilter(NameSlugSearchFilterSet):
|
|
|
fields = ['name', 'slug', 'color']
|
|
|
|
|
|
|
|
|
-class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
+class RackFilter(TenancyFilterSet, CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
|
@@ -172,28 +150,6 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
to_field_name='slug',
|
|
|
label='Group',
|
|
|
)
|
|
|
- tenant_group_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__id',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='id',
|
|
|
- label='Tenant Group (ID)',
|
|
|
- )
|
|
|
- tenant_group = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__slug',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='slug',
|
|
|
- label='Tenant Group (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)',
|
|
|
- )
|
|
|
status = django_filters.MultipleChoiceFilter(
|
|
|
choices=RACK_STATUS_CHOICES,
|
|
|
null_value=None
|
|
|
@@ -230,7 +186,7 @@ class RackFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
)
|
|
|
|
|
|
|
|
|
-class RackReservationFilter(django_filters.FilterSet):
|
|
|
+class RackReservationFilter(TenancyFilterSet, django_filters.FilterSet):
|
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
|
@@ -265,28 +221,6 @@ class RackReservationFilter(django_filters.FilterSet):
|
|
|
to_field_name='slug',
|
|
|
label='Group',
|
|
|
)
|
|
|
- tenant_group_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__id',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='id',
|
|
|
- label='Tenant Group (ID)',
|
|
|
- )
|
|
|
- tenant_group = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__slug',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='slug',
|
|
|
- label='Tenant Group (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)',
|
|
|
- )
|
|
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
queryset=User.objects.all(),
|
|
|
label='User (ID)',
|
|
|
@@ -492,7 +426,7 @@ class PlatformFilter(NameSlugSearchFilterSet):
|
|
|
fields = ['name', 'slug']
|
|
|
|
|
|
|
|
|
-class DeviceFilter(CustomFieldFilterSet):
|
|
|
+class DeviceFilter(TenancyFilterSet, CustomFieldFilterSet):
|
|
|
id__in = NumericInFilter(
|
|
|
field_name='id',
|
|
|
lookup_expr='in'
|
|
|
@@ -527,28 +461,6 @@ class DeviceFilter(CustomFieldFilterSet):
|
|
|
to_field_name='slug',
|
|
|
label='Role (slug)',
|
|
|
)
|
|
|
- tenant_group_id = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__id',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='id',
|
|
|
- label='Tenant Group (ID)',
|
|
|
- )
|
|
|
- tenant_group = django_filters.ModelMultipleChoiceFilter(
|
|
|
- field_name='tenant__group__slug',
|
|
|
- queryset=TenantGroup.objects.all(),
|
|
|
- to_field_name='slug',
|
|
|
- label='Tenant Group (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(
|
|
|
queryset=Platform.objects.all(),
|
|
|
label='Platform (ID)',
|
|
|
@@ -978,7 +890,7 @@ class InventoryItemFilter(DeviceComponentFilterSet):
|
|
|
return queryset.filter(qs_filter)
|
|
|
|
|
|
|
|
|
-class VirtualChassisFilter(django_filters.FilterSet):
|
|
|
+class VirtualChassisFilter(TenancyFilterSet, django_filters.FilterSet):
|
|
|
q = django_filters.CharFilter(
|
|
|
method='search',
|
|
|
label='Search',
|
|
|
@@ -994,17 +906,6 @@ class VirtualChassisFilter(django_filters.FilterSet):
|
|
|
to_field_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()
|
|
|
|
|
|
class Meta:
|