context_processors.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.urls import reverse
  2. from .searchproviders import searchproviders
  3. def search_providers(request):
  4. allowed_providers = []
  5. try:
  6. if request.user_acl["can_search"]:
  7. allowed_providers = searchproviders.get_allowed_providers(request)
  8. except AttributeError:
  9. # is user has no acl_cache attribute, cease entire middleware
  10. # this is edge case that occurs when debug toolbar intercepts
  11. # the redirect response from logout page and runs context providers
  12. # with non-misago's anonymous user model that has no acl support
  13. return {}
  14. request.frontend_context["SEARCH_URL"] = reverse("misago:search")
  15. request.frontend_context["SEARCH_API"] = reverse("misago:api:search")
  16. request.frontend_context["SEARCH_PROVIDERS"] = []
  17. for provider in allowed_providers:
  18. request.frontend_context["SEARCH_PROVIDERS"].append(
  19. {
  20. "id": provider.url,
  21. "name": str(provider.name),
  22. "icon": provider.icon,
  23. "url": reverse(
  24. "misago:search", kwargs={"search_provider": provider.url}
  25. ),
  26. "api": reverse(
  27. "misago:api:search", kwargs={"search_provider": provider.url}
  28. ),
  29. "results": None,
  30. "time": None,
  31. }
  32. )
  33. return {}