views.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  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.translation import gettext as _
  6. from .searchproviders import searchproviders
  7. def landing(request):
  8. allowed_providers = searchproviders.get_allowed_providers(request)
  9. if not request.user_acl["can_search"] or not allowed_providers:
  10. raise PermissionDenied(_("You don't have permission to search site."))
  11. default_provider = allowed_providers[0]
  12. return redirect("misago:search", search_provider=default_provider.url)
  13. def search(request, search_provider):
  14. all_providers = searchproviders.get_providers(request)
  15. if not request.user_acl["can_search"] or not all_providers:
  16. raise PermissionDenied(_("You don't have permission to search site."))
  17. for provider in all_providers:
  18. if provider.url == search_provider:
  19. provider.allow_search()
  20. break
  21. else:
  22. raise Http404()
  23. if "q" in request.GET:
  24. request.frontend_context["SEARCH_QUERY"] = request.GET.get("q")
  25. return render(request, "misago/search.html")