from django.urls import reverse

from .searchproviders import searchproviders


def search_providers(request):
    allowed_providers = []

    try:
        if request.user_acl["can_search"]:
            allowed_providers = searchproviders.get_allowed_providers(request)
    except AttributeError:
        # is user has no acl_cache attribute, cease entire middleware
        # this is edge case that occurs when debug toolbar intercepts
        # the redirect response from logout page and runs context providers
        # with non-misago's anonymous user model that has no acl support
        return {}

    request.frontend_context["SEARCH_URL"] = reverse("misago:search")
    request.frontend_context["SEARCH_API"] = reverse("misago:api:search")
    request.frontend_context["SEARCH_PROVIDERS"] = []

    for provider in allowed_providers:
        request.frontend_context["SEARCH_PROVIDERS"].append(
            {
                "id": provider.url,
                "name": str(provider.name),
                "icon": provider.icon,
                "url": reverse(
                    "misago:search", kwargs={"search_provider": provider.url}
                ),
                "api": reverse(
                    "misago:api:search", kwargs={"search_provider": provider.url}
                ),
                "results": None,
                "time": None,
            }
        )

    return {}