Просмотр исходного кода

Moved interface filterset under common class (#12200)

* moved interface filterset under common class #12007

* lint fix
Abhimanyu Saharan 2 лет назад
Родитель
Сommit
c26fe266cc
2 измененных файлов с 38 добавлено и 55 удалено
  1. 36 31
      netbox/dcim/filtersets.py
  2. 2 24
      netbox/virtualization/filtersets.py

+ 36 - 31
netbox/dcim/filtersets.py

@@ -24,6 +24,7 @@ __all__ = (
     'CableFilterSet',
     'CableFilterSet',
     'CabledObjectFilterSet',
     'CabledObjectFilterSet',
     'CableTerminationFilterSet',
     'CableTerminationFilterSet',
+    'CommonInterfaceFilterSet',
     'ConsoleConnectionFilterSet',
     'ConsoleConnectionFilterSet',
     'ConsolePortFilterSet',
     'ConsolePortFilterSet',
     'ConsolePortTemplateFilterSet',
     'ConsolePortTemplateFilterSet',
@@ -1321,11 +1322,45 @@ class PowerOutletFilterSet(
         fields = ['id', 'name', 'label', 'feed_leg', 'description', 'cable_end']
         fields = ['id', 'name', 'label', 'feed_leg', 'description', 'cable_end']
 
 
 
 
+class CommonInterfaceFilterSet(django_filters.FilterSet):
+    vlan_id = django_filters.CharFilter(
+        method='filter_vlan_id',
+        label=_('Assigned VLAN')
+    )
+    vlan = django_filters.CharFilter(
+        method='filter_vlan',
+        label=_('Assigned VID')
+    )
+    vrf_id = django_filters.ModelMultipleChoiceFilter(
+        field_name='vrf',
+        queryset=VRF.objects.all(),
+        label=_('VRF'),
+    )
+    vrf = django_filters.ModelMultipleChoiceFilter(
+        field_name='vrf__rd',
+        queryset=VRF.objects.all(),
+        to_field_name='rd',
+        label=_('VRF (RD)'),
+    )
+    l2vpn_id = django_filters.ModelMultipleChoiceFilter(
+        field_name='l2vpn_terminations__l2vpn',
+        queryset=L2VPN.objects.all(),
+        label=_('L2VPN (ID)'),
+    )
+    l2vpn = django_filters.ModelMultipleChoiceFilter(
+        field_name='l2vpn_terminations__l2vpn__identifier',
+        queryset=L2VPN.objects.all(),
+        to_field_name='identifier',
+        label=_('L2VPN'),
+    )
+
+
 class InterfaceFilterSet(
 class InterfaceFilterSet(
     ModularDeviceComponentFilterSet,
     ModularDeviceComponentFilterSet,
     NetBoxModelFilterSet,
     NetBoxModelFilterSet,
     CabledObjectFilterSet,
     CabledObjectFilterSet,
-    PathEndpointFilterSet
+    PathEndpointFilterSet,
+    CommonInterfaceFilterSet
 ):
 ):
     # Override device and device_id filters from DeviceComponentFilterSet to match against any peer virtual chassis
     # Override device and device_id filters from DeviceComponentFilterSet to match against any peer virtual chassis
     # members
     # members
@@ -1370,14 +1405,6 @@ class InterfaceFilterSet(
     poe_type = django_filters.MultipleChoiceFilter(
     poe_type = django_filters.MultipleChoiceFilter(
         choices=InterfacePoETypeChoices
         choices=InterfacePoETypeChoices
     )
     )
-    vlan_id = django_filters.CharFilter(
-        method='filter_vlan_id',
-        label=_('Assigned VLAN')
-    )
-    vlan = django_filters.CharFilter(
-        method='filter_vlan',
-        label=_('Assigned VID')
-    )
     type = django_filters.MultipleChoiceFilter(
     type = django_filters.MultipleChoiceFilter(
         choices=InterfaceTypeChoices,
         choices=InterfaceTypeChoices,
         null_value=None
         null_value=None
@@ -1388,17 +1415,6 @@ class InterfaceFilterSet(
     rf_channel = django_filters.MultipleChoiceFilter(
     rf_channel = django_filters.MultipleChoiceFilter(
         choices=WirelessChannelChoices
         choices=WirelessChannelChoices
     )
     )
-    vrf_id = django_filters.ModelMultipleChoiceFilter(
-        field_name='vrf',
-        queryset=VRF.objects.all(),
-        label=_('VRF'),
-    )
-    vrf = django_filters.ModelMultipleChoiceFilter(
-        field_name='vrf__rd',
-        queryset=VRF.objects.all(),
-        to_field_name='rd',
-        label=_('VRF (RD)'),
-    )
     vdc_id = django_filters.ModelMultipleChoiceFilter(
     vdc_id = django_filters.ModelMultipleChoiceFilter(
         field_name='vdcs',
         field_name='vdcs',
         queryset=VirtualDeviceContext.objects.all(),
         queryset=VirtualDeviceContext.objects.all(),
@@ -1416,17 +1432,6 @@ class InterfaceFilterSet(
         to_field_name='name',
         to_field_name='name',
         label='Virtual Device Context',
         label='Virtual Device Context',
     )
     )
-    l2vpn_id = django_filters.ModelMultipleChoiceFilter(
-        field_name='l2vpn_terminations__l2vpn',
-        queryset=L2VPN.objects.all(),
-        label=_('L2VPN (ID)'),
-    )
-    l2vpn = django_filters.ModelMultipleChoiceFilter(
-        field_name='l2vpn_terminations__l2vpn__identifier',
-        queryset=L2VPN.objects.all(),
-        to_field_name='identifier',
-        label=_('L2VPN'),
-    )
 
 
     class Meta:
     class Meta:
         model = Interface
         model = Interface

+ 2 - 24
netbox/virtualization/filtersets.py

@@ -2,9 +2,9 @@ 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.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 ipam.models import L2VPN, VRF
 from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet
 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
@@ -250,7 +250,7 @@ class VirtualMachineFilterSet(
         return queryset.exclude(params)
         return queryset.exclude(params)
 
 
 
 
-class VMInterfaceFilterSet(NetBoxModelFilterSet):
+class VMInterfaceFilterSet(NetBoxModelFilterSet, CommonInterfaceFilterSet):
     cluster_id = django_filters.ModelMultipleChoiceFilter(
     cluster_id = django_filters.ModelMultipleChoiceFilter(
         field_name='virtual_machine__cluster',
         field_name='virtual_machine__cluster',
         queryset=Cluster.objects.all(),
         queryset=Cluster.objects.all(),
@@ -286,28 +286,6 @@ class VMInterfaceFilterSet(NetBoxModelFilterSet):
     mac_address = MultiValueMACAddressFilter(
     mac_address = MultiValueMACAddressFilter(
         label=_('MAC address'),
         label=_('MAC address'),
     )
     )
-    vrf_id = django_filters.ModelMultipleChoiceFilter(
-        field_name='vrf',
-        queryset=VRF.objects.all(),
-        label=_('VRF'),
-    )
-    vrf = django_filters.ModelMultipleChoiceFilter(
-        field_name='vrf__rd',
-        queryset=VRF.objects.all(),
-        to_field_name='rd',
-        label=_('VRF (RD)'),
-    )
-    l2vpn_id = django_filters.ModelMultipleChoiceFilter(
-        field_name='l2vpn_terminations__l2vpn',
-        queryset=L2VPN.objects.all(),
-        label=_('L2VPN (ID)'),
-    )
-    l2vpn = django_filters.ModelMultipleChoiceFilter(
-        field_name='l2vpn_terminations__l2vpn__identifier',
-        queryset=L2VPN.objects.all(),
-        to_field_name='identifier',
-        label=_('L2VPN'),
-    )
 
 
     class Meta:
     class Meta:
         model = VMInterface
         model = VMInterface