From b6347602b9ebf705e38455e43c8c65588ff61979 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 20 Sep 2022 07:48:13 -0700 Subject: [PATCH] 7016 add search indexes --- netbox/search/backends.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/netbox/search/backends.py b/netbox/search/backends.py index 1e3533de2..471b7edff 100644 --- a/netbox/search/backends.py +++ b/netbox/search/backends.py @@ -107,6 +107,30 @@ class PostgresIcontainsSearchBackend(SearchBackend): def _use_hooks(self): return False + def search(self, search_text): + results = [] + + for obj_type in SEARCH_TYPES.keys(): + + queryset = SEARCH_TYPES[obj_type].queryset.restrict(request.user, 'view') + filterset = SEARCH_TYPES[obj_type].filterset + table = SEARCH_TYPES[obj_type].table + url = SEARCH_TYPES[obj_type].url + + # Construct the results table for this object type + filtered_queryset = filterset({'q': search_text}, 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={search_text}" + }) + + return results + # The main search methods. default_search_engine = SearchBackend("default")