ArchiveBox/archivebox/core/mixins.py

26 lines
958 B
Python
Raw Normal View History

from django.contrib import messages
2020-11-17 18:42:57 -05:00
from archivebox.search import query_search_index
2020-11-17 18:42:57 -05:00
class SearchResultsAdminMixin(object):
def get_search_results(self, request, queryset, search_term):
''' Enhances the search queryset with results from the search backend.
2020-11-17 18:42:57 -05:00
'''
qs, use_distinct = \
super(SearchResultsAdminMixin, self).get_search_results(
request, queryset, search_term)
search_term = search_term.strip()
if not search_term:
return qs, use_distinct
try:
snapshot_ids = query_search_index(search_term)
except Exception as err:
messages.add_message(request, messages.WARNING, f'Error from the search backend, only showing results from default admin search fields - Error: {err}')
else:
qsearch = queryset.filter(pk__in=snapshot_ids)
qs |= qsearch
2020-11-17 18:42:57 -05:00
finally:
return qs, use_distinct