Closes #7239: Redirect global search to filtered object list when an object type is selected

This commit is contained in:
jeremystretch 2021-09-13 09:33:08 -04:00
parent ab0a2abc54
commit 147a4cbfb0
3 changed files with 10 additions and 15 deletions

View File

@ -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

View File

@ -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']

View File

@ -54,7 +54,7 @@
{% endif %}
{% else %}
<div class="row">
<div class="col col-12 col-lg-4 offset-lg-4">
<div class="col col-12 col-lg-6 offset-lg-3">
<form action="{% url 'search' %}" method="get" class="form form-horizontal">
<div class="card">
<h5 class="card-header">