Closes #972: Add ability to filter connections list by device name

This commit is contained in:
Jeremy Stretch 2017-03-23 10:07:02 -04:00
parent fb6cfa45fd
commit c0417c1989
2 changed files with 39 additions and 12 deletions

View File

@ -443,42 +443,58 @@ class ConsoleConnectionFilter(django_filters.FilterSet):
method='filter_site', method='filter_site',
label='Site (slug)', label='Site (slug)',
) )
device = django_filters.CharFilter(
class Meta: method='filter_device',
model = ConsoleServerPort label='Device',
fields = [] )
def filter_site(self, queryset, name, value): def filter_site(self, queryset, name, value):
if not value.strip(): if not value.strip():
return queryset return queryset
return queryset.filter(cs_port__device__site__slug=value) return queryset.filter(cs_port__device__site__slug=value)
def filter_device(self, queryset, name, value):
if not value.strip():
return queryset
return queryset.filter(
Q(device__name__icontains=value) |
Q(cs_port__device__name__icontains=value)
)
class PowerConnectionFilter(django_filters.FilterSet): class PowerConnectionFilter(django_filters.FilterSet):
site = django_filters.CharFilter( site = django_filters.CharFilter(
method='filter_site', method='filter_site',
label='Site (slug)', label='Site (slug)',
) )
device = django_filters.CharFilter(
class Meta: method='filter_device',
model = PowerOutlet label='Device',
fields = [] )
def filter_site(self, queryset, name, value): def filter_site(self, queryset, name, value):
if not value.strip(): if not value.strip():
return queryset return queryset
return queryset.filter(power_outlet__device__site__slug=value) return queryset.filter(power_outlet__device__site__slug=value)
def filter_device(self, queryset, name, value):
if not value.strip():
return queryset
return queryset.filter(
Q(device__name__icontains=value) |
Q(power_outlet__device__name__icontains=value)
)
class InterfaceConnectionFilter(django_filters.FilterSet): class InterfaceConnectionFilter(django_filters.FilterSet):
site = django_filters.CharFilter( site = django_filters.CharFilter(
method='filter_site', method='filter_site',
label='Site (slug)', label='Site (slug)',
) )
device = django_filters.CharFilter(
class Meta: method='filter_device',
model = InterfaceConnection label='Device',
fields = [] )
def filter_site(self, queryset, name, value): def filter_site(self, queryset, name, value):
if not value.strip(): if not value.strip():
@ -487,3 +503,11 @@ class InterfaceConnectionFilter(django_filters.FilterSet):
Q(interface_a__device__site__slug=value) | Q(interface_a__device__site__slug=value) |
Q(interface_b__device__site__slug=value) Q(interface_b__device__site__slug=value)
) )
def filter_device(self, queryset, name, value):
if not value.strip():
return queryset
return queryset.filter(
Q(interface_a__device__name__icontains=value) |
Q(interface_b__device__name__icontains=value)
)

View File

@ -1658,14 +1658,17 @@ class PopulateDeviceBayForm(BootstrapMixin, forms.Form):
class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form): class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug') site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug')
device = forms.CharField(required=False, label='Device name')
class PowerConnectionFilterForm(BootstrapMixin, forms.Form): class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug') site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug')
device = forms.CharField(required=False, label='Device name')
class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form): class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug') site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug')
device = forms.CharField(required=False, label='Device name')
# #