Skip to content

Commit

Permalink
Closes #663: Added MAC address search field to device list
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Dec 6, 2016
1 parent 28b586a commit 3262262
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
11 changes: 11 additions & 0 deletions netbox/dcim/filters.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import django_filters
from netaddr.core import AddrFormatError

from django.db.models import Q

Expand Down Expand Up @@ -146,6 +147,10 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
action='search',
label='Search',
)
mac_address = django_filters.MethodFilter(
action='_mac_address',
label='MAC address',
)
site_id = django_filters.ModelMultipleChoiceFilter(
name='rack__site',
queryset=Site.objects.all(),
Expand Down Expand Up @@ -254,6 +259,12 @@ def search(self, queryset, value):
Q(comments__icontains=value)
).distinct()

def _mac_address(self, queryset, value):
try:
return queryset.filter(interfaces__mac_address=value.strip()).distinct()
except AddrFormatError:
return queryset.none()


class ConsolePortFilter(django_filters.FilterSet):
device_id = django_filters.ModelMultipleChoiceFilter(
Expand Down
1 change: 1 addition & 0 deletions netbox/dcim/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,7 @@ class DeviceFilterForm(BootstrapMixin, CustomFieldFilterForm):
platform = FilterChoiceField(queryset=Platform.objects.annotate(filter_count=Count('devices')),
to_field_name='slug', null_option=(0, 'None'))
status = forms.NullBooleanField(required=False, widget=forms.Select(choices=FORM_STATUS_CHOICES))
mac_address = forms.CharField(label='MAC address')


#
Expand Down

0 comments on commit 3262262

Please sign in to comment.