|
|
@@ -17,7 +17,6 @@ from .choices import *
|
|
|
from .constants import *
|
|
|
from .models import *
|
|
|
|
|
|
-
|
|
|
__all__ = (
|
|
|
'CableFilterSet',
|
|
|
'CableTerminationFilterSet',
|
|
|
@@ -1243,73 +1242,6 @@ class CableFilterSet(PrimaryModelFilterSet):
|
|
|
return queryset
|
|
|
|
|
|
|
|
|
-class ConnectionFilterSet(BaseFilterSet):
|
|
|
-
|
|
|
- def filter_site(self, queryset, name, value):
|
|
|
- if not value.strip():
|
|
|
- return queryset
|
|
|
- return queryset.filter(device__site__slug=value)
|
|
|
-
|
|
|
- def filter_device(self, queryset, name, value):
|
|
|
- if not value:
|
|
|
- return queryset
|
|
|
- return queryset.filter(**{f'{name}__in': value})
|
|
|
-
|
|
|
-
|
|
|
-class ConsoleConnectionFilterSet(ConnectionFilterSet):
|
|
|
- site = django_filters.CharFilter(
|
|
|
- method='filter_site',
|
|
|
- label='Site (slug)',
|
|
|
- )
|
|
|
- device_id = MultiValueNumberFilter(
|
|
|
- method='filter_device'
|
|
|
- )
|
|
|
- device = MultiValueCharFilter(
|
|
|
- method='filter_device',
|
|
|
- field_name='device__name'
|
|
|
- )
|
|
|
-
|
|
|
- class Meta:
|
|
|
- model = ConsolePort
|
|
|
- fields = ['name']
|
|
|
-
|
|
|
-
|
|
|
-class PowerConnectionFilterSet(ConnectionFilterSet):
|
|
|
- site = django_filters.CharFilter(
|
|
|
- method='filter_site',
|
|
|
- label='Site (slug)',
|
|
|
- )
|
|
|
- device_id = MultiValueNumberFilter(
|
|
|
- method='filter_device'
|
|
|
- )
|
|
|
- device = MultiValueCharFilter(
|
|
|
- method='filter_device',
|
|
|
- field_name='device__name'
|
|
|
- )
|
|
|
-
|
|
|
- class Meta:
|
|
|
- model = PowerPort
|
|
|
- fields = ['name']
|
|
|
-
|
|
|
-
|
|
|
-class InterfaceConnectionFilterSet(ConnectionFilterSet):
|
|
|
- site = django_filters.CharFilter(
|
|
|
- method='filter_site',
|
|
|
- label='Site (slug)',
|
|
|
- )
|
|
|
- device_id = MultiValueNumberFilter(
|
|
|
- method='filter_device'
|
|
|
- )
|
|
|
- device = MultiValueCharFilter(
|
|
|
- method='filter_device',
|
|
|
- field_name='device__name'
|
|
|
- )
|
|
|
-
|
|
|
- class Meta:
|
|
|
- model = Interface
|
|
|
- fields = []
|
|
|
-
|
|
|
-
|
|
|
class PowerPanelFilterSet(PrimaryModelFilterSet):
|
|
|
q = django_filters.CharFilter(
|
|
|
method='search',
|
|
|
@@ -1441,3 +1373,52 @@ class PowerFeedFilterSet(PrimaryModelFilterSet, CableTerminationFilterSet, PathE
|
|
|
Q(comments__icontains=value)
|
|
|
)
|
|
|
return queryset.filter(qs_filter)
|
|
|
+
|
|
|
+
|
|
|
+#
|
|
|
+# Connection filter sets
|
|
|
+#
|
|
|
+
|
|
|
+class ConnectionFilterSet(BaseFilterSet):
|
|
|
+ site_id = MultiValueNumberFilter(
|
|
|
+ method='filter_connections',
|
|
|
+ field_name='device__site_id'
|
|
|
+ )
|
|
|
+ site = MultiValueCharFilter(
|
|
|
+ method='filter_connections',
|
|
|
+ field_name='device__site__slug'
|
|
|
+ )
|
|
|
+ device_id = MultiValueNumberFilter(
|
|
|
+ method='filter_connections',
|
|
|
+ field_name='device_id'
|
|
|
+ )
|
|
|
+ device = MultiValueCharFilter(
|
|
|
+ method='filter_connections',
|
|
|
+ field_name='device__name'
|
|
|
+ )
|
|
|
+
|
|
|
+ def filter_connections(self, queryset, name, value):
|
|
|
+ if not value:
|
|
|
+ return queryset
|
|
|
+ return queryset.filter(**{f'{name}__in': value})
|
|
|
+
|
|
|
+
|
|
|
+class ConsoleConnectionFilterSet(ConnectionFilterSet):
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = ConsolePort
|
|
|
+ fields = ['name']
|
|
|
+
|
|
|
+
|
|
|
+class PowerConnectionFilterSet(ConnectionFilterSet):
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = PowerPort
|
|
|
+ fields = ['name']
|
|
|
+
|
|
|
+
|
|
|
+class InterfaceConnectionFilterSet(ConnectionFilterSet):
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = Interface
|
|
|
+ fields = []
|