Create: search form

This commit is contained in:
Stepan Zhukovsky 2023-08-07 12:31:30 +09:00
parent 95352ff5f0
commit 3b1b42d483
3 changed files with 26 additions and 6 deletions

View File

@ -68,14 +68,19 @@
<!-- Search --> <!-- Search -->
<ul class="navbar-nav flex-row flex-wrap me-md-auto"> <ul class="navbar-nav flex-row flex-wrap me-md-auto">
<li class="nav-item py-2 col-12 col-lg-auto"> <li class="nav-item py-2 col-12 col-lg-auto">
<form class="d-flex" role="search"> <form class="d-flex" role="search" action="{% url 'collector:tickets' %}">
<input <input
class="form-control me-2" class="form-control me-2"
type="search" type="search"
placeholder="Search" placeholder="Search"
aria-label="Search" aria-label="Search"
name="search"
/> />
<button class="btn btn-outline-success" type="submit"><i class="bi bi-search"></i></button> <button
class="btn btn-outline-success"
type="submit">
<i class="bi bi-search"></i>
</button>
</form> </form>
</li> </li>
</ul> </ul>

View File

@ -7,8 +7,7 @@
{% csrf_token %} {% csrf_token %}
<!-- Ticket --> <!-- Ticket -->
{% for ticket in tickets %} {% for ticket in tickets %}
<div class="row"> <div id="div-ticket-{{ ticket.number }}" class="list-group mb-2">
<div id="div-ticket-{{ ticket.number }}" class="list-group mb-2 ms-1">
<div class="list-group-item list-group-item-action disable" aria-current="true"> <div class="list-group-item list-group-item-action disable" aria-current="true">
{% include 'collector/includes/ticket_info.html' %} {% include 'collector/includes/ticket_info.html' %}
<div class="col-xl-6 mt-1 mb-2"> <div class="col-xl-6 mt-1 mb-2">
@ -16,7 +15,6 @@
{% if ticket.note %} {% if ticket.note %}
<div class="accordion-item"> <div class="accordion-item">
<h2 class="accordion-header"> <h2 class="accordion-header">
<button <button
class="accordion-button collapsed" class="accordion-button collapsed"
type="button" data-bs-toggle="collapse" type="button" data-bs-toggle="collapse"
@ -78,7 +76,6 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<!-- Modal ticket --> <!-- Modal ticket -->
{% include 'collector/includes/modal_ticket.html' %} {% include 'collector/includes/modal_ticket.html' %}
<!-- Modal archive --> <!-- Modal archive -->

View File

@ -4,6 +4,7 @@ from django.http import FileResponse, JsonResponse
from django.views import generic from django.views import generic
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.db.models import Q
from rest_framework import status from rest_framework import status
# from rest_framework.response import Response # from rest_framework.response import Response
@ -64,6 +65,23 @@ class ListAllTickets(PageTitleViewMixin, generic.ListView):
paginate_by = 5 paginate_by = 5
title = 'Collector - tickets' title = 'Collector - tickets'
def get_queryset(self):
search_query = self.request.GET.get('search', '')
if search_query:
query_list = []
try:
for item in search_query.split(','):
query_list.append(int(item))
except ValueError:
return super().get_queryset()
queryset = self.model.objects.filter(
Q(number__in=query_list) | Q(number__icontains=query_list[0])
)
self.paginate_by = 100 # fake disable pagination)
return queryset
return super().get_queryset()
class ListPlatformTickets(PageTitleViewMixin, generic.ListView): class ListPlatformTickets(PageTitleViewMixin, generic.ListView):
model = Ticket model = Ticket