2
0

mixins.py 903 B

1234567891011121314151617181920212223
  1. from django.contrib import messages
  2. from archivebox.search import query_search_index
  3. class SearchResultsAdminMixin(object):
  4. def get_search_results(self, request, queryset, search_term):
  5. ''' Enhances the search queryset with results from the search backend.
  6. '''
  7. qs, use_distinct = \
  8. super(SearchResultsAdminMixin, self).get_search_results(
  9. request, queryset, search_term)
  10. search_term = search_term.strip()
  11. if not search_term:
  12. return qs, use_distinct
  13. try:
  14. qsearch = query_search_index(search_term)
  15. except Exception as err:
  16. messages.add_message(request, messages.WARNING, f'Error from the search backend, only showing results from default admin search fields - Error: {err}')
  17. else:
  18. qs = queryset & qsearch
  19. finally:
  20. return qs, use_distinct