# (c) cavaliba.com - data - views_searchbar.py

"""Global top-navbar searchbar: single view, GET-only results page."""

from django.shortcuts import redirect, render

from app_home.log import INFO, log

from .aaa import start_view
from .search import searchbar


def searchbar_view(request):
    """Render global search results for the top navbar searchbar (p_data_access gated)."""

    context = start_view(
        request, app="data", view="searchbar",
        perm="p_data_access", noauthz="app_home:private",
    )  # fmt: skip
    if context["redirect"]:
        return redirect(context["redirect"])
    aaa = context["aaa"]

    query = (request.GET.get("query") or "").strip()
    # "navbar_query" (not "query") - base.html's navbar searchbar input reads
    # this exact key, and it's shared by every page that extends base.html;
    # any other view's local "query" context (instance_list, IAM permission
    # list, IPAM tools, ...) would otherwise leak into the navbar field
    context["navbar_query"] = query
    context["results"] = []
    context["truncated"] = False
    context["error"] = None

    if query:
        reply = searchbar(query=query, aaa=aaa)
        context["results"] = reply["results"]
        context["truncated"] = reply["truncated"]
        context["error"] = reply["error"]

    log(INFO, aaa=aaa, app="data", view="searchbar", action="get", status="OK",
        data=f"query={query} results={len(context['results'])}")  # fmt: skip

    return render(request, "app_data/searchbar_results.html", context)
