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

Closes #8367: Add ASNs to global search function

jeremystretch 4 лет назад
Родитель
Сommit
21468fff25

+ 2 - 1
docs/release-notes/version-3.1.md

@@ -4,7 +4,8 @@
 
 ### Enhancements
 
-* [#8275](https://github.com/netbox-community/netbox/issues/8275) - Change ASN display column from ASDOT to ASPLAIN.  Add ASDOT display column.
+* [#8275](https://github.com/netbox-community/netbox/issues/8275) - Introduce alternative ASDOT-formatted column for ASNs
+* [#8367](https://github.com/netbox-community/netbox/issues/8367) - Add ASNs to global search function
 
 ### Bug Fixes
 

+ 4 - 0
netbox/ipam/filtersets.py

@@ -209,6 +209,10 @@ class ASNFilterSet(OrganizationalModelFilterSet, TenancyFilterSet):
         if not value.strip():
             return queryset
         qs_filter = Q(description__icontains=value)
+        try:
+            qs_filter |= Q(asn=int(value))
+        except ValueError:
+            pass
         return queryset.filter(qs_filter)
 
 

+ 4 - 2
netbox/ipam/tables/ip.py

@@ -114,7 +114,6 @@ class ASNTable(BaseTable):
         linkify=True,
         verbose_name='ASDOT'
     )
-
     site_count = LinkedCountColumn(
         viewname='dcim:site_list',
         url_params={'asn_id': 'pk'},
@@ -124,7 +123,10 @@ class ASNTable(BaseTable):
 
     class Meta(BaseTable.Meta):
         model = ASN
-        fields = ('pk', 'asn', 'asn_asdot', 'rir', 'site_count', 'tenant', 'description', 'actions', 'created', 'last_updated',)
+        fields = (
+            'pk', 'asn', 'asn_asdot', 'rir', 'site_count', 'tenant', 'description', 'actions', 'created',
+            'last_updated',
+        )
         default_columns = ('pk', 'asn', 'rir', 'site_count', 'sites', 'tenant', 'actions')
 
 

+ 11 - 3
netbox/netbox/constants.py

@@ -12,9 +12,11 @@ from dcim.tables import (
     CableTable, DeviceTable, DeviceTypeTable, PowerFeedTable, RackTable, RackReservationTable, LocationTable, SiteTable,
     VirtualChassisTable,
 )
-from ipam.filtersets import AggregateFilterSet, IPAddressFilterSet, PrefixFilterSet, VLANFilterSet, VRFFilterSet
-from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF
-from ipam.tables import AggregateTable, IPAddressTable, PrefixTable, VLANTable, VRFTable
+from ipam.filtersets import (
+    AggregateFilterSet, ASNFilterSet, IPAddressFilterSet, PrefixFilterSet, VLANFilterSet, VRFFilterSet,
+)
+from ipam.models import Aggregate, ASN, IPAddress, Prefix, VLAN, VRF
+from ipam.tables import AggregateTable, ASNTable, IPAddressTable, PrefixTable, VLANTable, VRFTable
 from tenancy.filtersets import TenantFilterSet
 from tenancy.models import Tenant
 from tenancy.tables import TenantTable
@@ -170,6 +172,12 @@ SEARCH_TYPES = OrderedDict((
         'table': VLANTable,
         'url': 'ipam:vlan_list',
     }),
+    ('asn', {
+        'queryset': ASN.objects.prefetch_related('rir', 'tenant'),
+        'filterset': ASNFilterSet,
+        'table': ASNTable,
+        'url': 'ipam:asn_list',
+    }),
     # Tenancy
     ('tenant', {
         'queryset': Tenant.objects.prefetch_related('group'),