views.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  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 ugettext as _
  6. from .searchproviders import searchproviders
  7. def landing(request):
  8. allowed_providers = searchproviders.get_allowed_providers(request)
  9. if not request.user.acl_cache['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_cache['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')