views.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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['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. if not request.user.acl['can_search']:
  16. raise PermissionDenied(_("You don't have permission to search site."))
  17. for provider in searchproviders.get_providers(request):
  18. if provider.url == search_provider:
  19. provider.allow_search()
  20. break
  21. else:
  22. raise Http404()
  23. request.frontend_context['SEARCH_PROVIDERS'] = []
  24. for provider in searchproviders.get_allowed_providers(request):
  25. request.frontend_context['SEARCH_PROVIDERS'].append({
  26. 'name': six.text_type(provider.name),
  27. 'url': reverse('misago:search', kwargs={'search_provider': provider.url}),
  28. 'api': provider.url,
  29. 'results': None
  30. })
  31. return render(request, 'misago/search.html')