From 147a4cbfb053b8bbc5f0eb66c08c9c0220165bb6 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 13 Sep 2021 09:33:08 -0400 Subject: [PATCH] Closes #7239: Redirect global search to filtered object list when an object type is selected --- docs/release-notes/version-3.0.md | 4 ++++ netbox/netbox/views/__init__.py | 19 +++++-------------- netbox/templates/search.html | 2 +- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 37a1947c2..1a20a9f84 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -2,6 +2,10 @@ ## v3.0.3 (FUTURE) +### Enhancements + +* [#7239](https://github.com/netbox-community/netbox/issues/7239) - Redirect global search to filtered object list when an object type is selected + ### Bug Fixes * [#7167](https://github.com/netbox-community/netbox/issues/7167) - Ensure consistent font size when using monospace formatting diff --git a/netbox/netbox/views/__init__.py b/netbox/netbox/views/__init__.py index bb24cff5a..3568204fe 100644 --- a/netbox/netbox/views/__init__.py +++ b/netbox/netbox/views/__init__.py @@ -26,7 +26,6 @@ from ipam.models import Aggregate, IPAddress, IPRange, Prefix, VLAN, VRF from netbox.constants import SEARCH_MAX_RESULTS, SEARCH_TYPES from netbox.forms import SearchForm from tenancy.models import Tenant -from utilities.tables import paginate_table from virtualization.models import Cluster, VirtualMachine @@ -154,26 +153,18 @@ class HomeView(View): class SearchView(View): def get(self, request): - - # No query - if 'q' not in request.GET: - return render(request, 'search.html', { - 'form': SearchForm(), - }) - form = SearchForm(request.GET) results = [] if form.is_valid(): + # If an object type has been specified, redirect to the dedicated view for it if form.cleaned_data['obj_type']: - # Searching for a single type of object - obj_types = [form.cleaned_data['obj_type']] - else: - # Searching all object types - obj_types = SEARCH_TYPES.keys() + object_type = form.cleaned_data['obj_type'] + url = reverse(SEARCH_TYPES[object_type]['url']) + return redirect(f"{url}?q={form.cleaned_data['q']}") - for obj_type in obj_types: + for obj_type in SEARCH_TYPES.keys(): queryset = SEARCH_TYPES[obj_type]['queryset'].restrict(request.user, 'view') filterset = SEARCH_TYPES[obj_type]['filterset'] diff --git a/netbox/templates/search.html b/netbox/templates/search.html index 45b93016f..187b76c59 100644 --- a/netbox/templates/search.html +++ b/netbox/templates/search.html @@ -54,7 +54,7 @@ {% endif %} {% else %}
-
+