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

Closes #8367: Add ASNs to global search function

jeremystretch 4 лет назад
Родитель
Сommit
21468fff25
4 измененных файлов с 21 добавлено и 6 удалено
  1. 2 1
      docs/release-notes/version-3.1.md
  2. 4 0
      netbox/ipam/filtersets.py
  3. 4 2
      netbox/ipam/tables/ip.py
  4. 11 3
      netbox/netbox/constants.py

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

@@ -4,7 +4,8 @@
 
 
 ### Enhancements
 ### 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
 ### Bug Fixes
 
 

+ 4 - 0
netbox/ipam/filtersets.py

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

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

@@ -114,7 +114,6 @@ class ASNTable(BaseTable):
         linkify=True,
         linkify=True,
         verbose_name='ASDOT'
         verbose_name='ASDOT'
     )
     )
-
     site_count = LinkedCountColumn(
     site_count = LinkedCountColumn(
         viewname='dcim:site_list',
         viewname='dcim:site_list',
         url_params={'asn_id': 'pk'},
         url_params={'asn_id': 'pk'},
@@ -124,7 +123,10 @@ class ASNTable(BaseTable):
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = ASN
         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')
         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,
     CableTable, DeviceTable, DeviceTypeTable, PowerFeedTable, RackTable, RackReservationTable, LocationTable, SiteTable,
     VirtualChassisTable,
     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.filtersets import TenantFilterSet
 from tenancy.models import Tenant
 from tenancy.models import Tenant
 from tenancy.tables import TenantTable
 from tenancy.tables import TenantTable
@@ -170,6 +172,12 @@ SEARCH_TYPES = OrderedDict((
         'table': VLANTable,
         'table': VLANTable,
         'url': 'ipam:vlan_list',
         'url': 'ipam:vlan_list',
     }),
     }),
+    ('asn', {
+        'queryset': ASN.objects.prefetch_related('rir', 'tenant'),
+        'filterset': ASNFilterSet,
+        'table': ASNTable,
+        'url': 'ipam:asn_list',
+    }),
     # Tenancy
     # Tenancy
     ('tenant', {
     ('tenant', {
         'queryset': Tenant.objects.prefetch_related('group'),
         'queryset': Tenant.objects.prefetch_related('group'),