WesternFriend/WF-website

View on GitHub
search/views.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render
from wagtail.models import Page

from pagination.helpers import get_paginated_items


def search(request: HttpRequest) -> HttpResponse:
    search_query = request.GET.get("query", None)
    page = request.GET.get("page", "1")
    number_per_page = 10

    # Search
    # Using the `or` operator to search for pages that contain any of the words
    if search_query:
        search_results = Page.objects.live().search(
            search_query,
            operator="or",
        )
    else:
        search_results = Page.objects.none()

    paginated_search_results = get_paginated_items(
        search_results,
        number_per_page,
        page,
    )

    return render(
        request,
        "search/search.html",
        {
            "search_query": search_query,
            "search_querystring": f"query={search_query}",
            "paginated_search_results": paginated_search_results,
        },
    )