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