admin.py 1005 B

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