From fbbdb3807ccd173835e7d32ff6e9773ee03b5f93 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 29 Jun 2016 12:06:37 -0400 Subject: [PATCH] Fixes #108: Added search for Sites --- netbox/dcim/filters.py | 23 +++++++++++++++++++++++ netbox/dcim/views.py | 1 + netbox/templates/dcim/site.html | 20 ++++++++++++++++++++ netbox/templates/dcim/site_list.html | 25 ++++++++++++++++++++++++- 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index 47f22168a..a0cb92f4d 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -8,6 +8,29 @@ from .models import ( ) +class SiteFilter(django_filters.FilterSet): + q = django_filters.MethodFilter( + action='search', + label='Search', + ) + + class Meta: + model = Site + fields = ['q', 'name', 'facility', 'asn'] + + def search(self, queryset, value): + value = value.strip() + qs_filter = Q(name__icontains=value) |\ + Q(facility__icontains=value) |\ + Q(physical_address__icontains=value) |\ + Q(shipping_address__icontains=value) + try: + qs_filter |= Q(asn=int(value)) + except ValueError: + pass + return queryset.filter(qs_filter) + + class RackGroupFilter(django_filters.FilterSet): site_id = django_filters.ModelMultipleChoiceFilter( name='site', diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 1500f096e..3cf157c7d 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -61,6 +61,7 @@ def expand_pattern(string): class SiteListView(ObjectListView): queryset = Site.objects.all() + filter = filters.SiteFilter table = tables.SiteTable template_name = 'dcim/site_list.html' diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index bddc8a505..a9db55e19 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -6,6 +6,26 @@ {% block title %}{{ site }}{% endblock %} {% block content %} +
+
+ +
+
+
+
+ + + + +
+
+
+

Sites

-{% render_table table 'table.html' %} +
+
+ {% render_table table 'table.html' %} +
+
+
+
+ Search +
+
+
+
+ + + + +
+
+
+
+
+
{% endblock %}