views.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.core.exceptions import PermissionDenied
  2. from django.http import Http404
  3. from django.shortcuts import redirect, render
  4. from django.urls import reverse
  5. from django.utils import six
  6. from django.utils.translation import ugettext as _
  7. from .searchproviders import searchproviders
  8. def landing(request):
  9. allowed_providers = searchproviders.get_allowed_providers(request)
  10. if not request.user.acl_cache['can_search'] or not allowed_providers:
  11. raise PermissionDenied(_("You don't have permission to search site."))
  12. default_provider = allowed_providers[0]
  13. return redirect('misago:search', search_provider=default_provider.url)
  14. def search(request, search_provider):
  15. all_providers = searchproviders.get_providers(request)
  16. if not request.user.acl_cache['can_search'] or not all_providers:
  17. raise PermissionDenied(_("You don't have permission to search site."))
  18. for provider in all_providers:
  19. if provider.url == search_provider:
  20. provider.allow_search()
  21. break
  22. else:
  23. raise Http404()
  24. if 'q' in request.GET:
  25. request.frontend_context['SEARCH_QUERY'] = request.GET.get('q')
  26. return render(request, 'misago/search.html')