context_processors.py 1.3 KB

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