mixins.py 908 B

123456789101112131415161718192021
  1. from django.contrib import messages
  2. from archivebox.search import query_search_index
  3. class SearchResultsAdminMixin:
  4. def get_search_results(self, request, queryset, search_term: str):
  5. """Enhances the search queryset with results from the search backend"""
  6. qs, use_distinct = super().get_search_results(request, queryset, search_term)
  7. search_term = search_term.strip()
  8. if not search_term:
  9. return qs, use_distinct
  10. try:
  11. qsearch = query_search_index(search_term)
  12. qs = qs | qsearch
  13. except Exception as err:
  14. print(f'[!] Error while using search backend: {err.__class__.__name__} {err}')
  15. messages.add_message(request, messages.WARNING, f'Error from the search backend, only showing results from default admin search fields - Error: {err}')
  16. return qs.distinct(), use_distinct