mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 00:36:11 -06:00
8927 use backend search function
This commit is contained in:
parent
639a7bd51b
commit
57825bf5b7
@ -160,24 +160,7 @@ class SearchView(View):
|
|||||||
url = reverse(search_registry[object_type].url)
|
url = reverse(search_registry[object_type].url)
|
||||||
return redirect(f"{url}?q={form.cleaned_data['q']}")
|
return redirect(f"{url}?q={form.cleaned_data['q']}")
|
||||||
|
|
||||||
for obj_type in search_registry.keys():
|
results = default_search_engine.search(request, form.cleaned_data['q'])
|
||||||
|
|
||||||
queryset = search_registry[obj_type].queryset.restrict(request.user, 'view')
|
|
||||||
filterset = search_registry[obj_type].filterset
|
|
||||||
table = search_registry[obj_type].table
|
|
||||||
url = search_registry[obj_type].url
|
|
||||||
|
|
||||||
# Construct the results table for this object type
|
|
||||||
filtered_queryset = filterset({'q': form.cleaned_data['q']}, queryset=queryset).qs
|
|
||||||
table = table(filtered_queryset, orderable=False)
|
|
||||||
table.paginate(per_page=SEARCH_MAX_RESULTS)
|
|
||||||
|
|
||||||
if table.page:
|
|
||||||
results.append({
|
|
||||||
'name': queryset.model._meta.verbose_name_plural,
|
|
||||||
'table': table,
|
|
||||||
'url': f"{reverse(url)}?q={form.cleaned_data.get('q')}"
|
|
||||||
})
|
|
||||||
|
|
||||||
return render(request, 'search.html', {
|
return render(request, 'search.html', {
|
||||||
'form': form,
|
'form': form,
|
||||||
|
@ -5,6 +5,8 @@ from django.conf import settings
|
|||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import post_save, pre_delete
|
from django.db.models.signals import post_save, pre_delete
|
||||||
|
from django.urls import reverse
|
||||||
|
from netbox.constants import SEARCH_MAX_RESULTS
|
||||||
|
|
||||||
# The cache for the initialized backend.
|
# The cache for the initialized backend.
|
||||||
_backends_cache = {}
|
_backends_cache = {}
|
||||||
@ -114,15 +116,16 @@ class PostgresIcontainsSearchBackend(SearchBackend):
|
|||||||
def _use_hooks(self):
|
def _use_hooks(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def search(self, search_text):
|
def search(self, request, search_text):
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
for obj_type in SEARCH_TYPES.keys():
|
search_registry = self.get_registry()
|
||||||
|
for obj_type in search_registry.keys():
|
||||||
|
|
||||||
queryset = SEARCH_TYPES[obj_type].queryset.restrict(request.user, 'view')
|
queryset = search_registry[obj_type].queryset.restrict(request.user, 'view')
|
||||||
filterset = SEARCH_TYPES[obj_type].filterset
|
filterset = search_registry[obj_type].filterset
|
||||||
table = SEARCH_TYPES[obj_type].table
|
table = search_registry[obj_type].table
|
||||||
url = SEARCH_TYPES[obj_type].url
|
url = search_registry[obj_type].url
|
||||||
|
|
||||||
# Construct the results table for this object type
|
# Construct the results table for this object type
|
||||||
filtered_queryset = filterset({'q': search_text}, queryset=queryset).qs
|
filtered_queryset = filterset({'q': search_text}, queryset=queryset).qs
|
||||||
|
Loading…
Reference in New Issue
Block a user