diff --git a/contracts/templates/contracts/search.html b/contracts/templates/contracts/search.html new file mode 100644 index 0000000000000000000000000000000000000000..e6eaf277859a0d3f759889fdac87b537268f8df4 --- /dev/null +++ b/contracts/templates/contracts/search.html @@ -0,0 +1,36 @@ +{% extends "shared/includes/base.html" %} +{% load add %} + +{% block content %} + {% include "contracts/includes/double_heading.html" with icon="ico--search" heading="Vyhledávání" subheading="dle názvu smlouvy" %} + + <div class="flex flex-row justify-center"> + <form method="post"> + {% csrf_token %} + <input + class="bg-grey-150 w-56 h-10 px-4 text-lg xl:h-14 xl:px-5" + type="text" + value="{% if query %}{{ query }}{% endif %}" + placeholder="Hledaný název" + aria-label="Vyhledávací box" + > + <button type="submit" class="btn text-lg"> + <div class="btn__body"> + <i class="ico--search"></i> + </div> + </button> + </form> + </div> + + {% if query %} + <h2 class="text-lg font-bold mb-10"> + Výsledky vyhledávání + </h2> + + {% if page|length != 0 %} + {% include "contracts/includes/contract_list.html" with page=page paginator=paginator %} + {% else %} + <span class="text-gray-300">Žádné výsledky.</span> + {% endif %} + {% endif %} +{% endblock %} diff --git a/contracts/views.py b/contracts/views.py index 27e352a5ec0f13ffc9897c5bc5da85cff47d129b..b84ce38a1aa147fe31f82ef7d51697e50801672e 100644 --- a/contracts/views.py +++ b/contracts/views.py @@ -119,6 +119,33 @@ def view_contract(request, id: int): ) +def search(request): + query = request.GET.get("q") + page = paginator = None + title = "Vyhledávání" + + if query is not None: + title = f"Vyhledávání - {query}" + + # WARNING: PostgreSQL-dependent + page, paginator = get_paginated_contracts( + request, + models.Q(name__search=query) + ) + + return render( + "contracts/search.html", + { + **get_base_context(request), + "title": title, + "description": "Vyhledávání smluv v registru České Pirátské Strany.", + "page": page, + "paginator": paginator, + "query": query, + } + ) + + # BEGIN Filtered contract + submodel views