mirror of
https://github.com/MOIS3Y/logs-collector.git
synced 2025-02-01 09:20:52 +01:00
Create: paginations
This commit is contained in:
parent
96ae8647e1
commit
e2b523a456
@ -82,6 +82,9 @@ class Ticket(models.Model):
|
||||
platform = models.ForeignKey('Platform', on_delete=models.CASCADE)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
ordering = ['-time_update']
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse(
|
||||
'ticket',
|
||||
|
@ -1,58 +1,62 @@
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-lg bg-body-tertiary">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{% url 'index' %}">Logs Collector</a>
|
||||
<button
|
||||
class="navbar-toggler"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#navbarSupportedContent"
|
||||
aria-controls="navbarSupportedContent"
|
||||
aria-expanded="false"
|
||||
aria-label="Переключатель навигации"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav ml-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
role="button"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
>Tickets</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a class="dropdown-item" href="{% url 'index' %}">All</a>
|
||||
</li>
|
||||
{% for platform in platforms %}
|
||||
<li>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
href="{{ platform.get_absolute_url }}"
|
||||
>{{ platform.pretty_name}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li><hr class="dropdown-divider" /></li>
|
||||
<li><a class="dropdown-item" href="#">Create ticket</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled">Отключенная</a>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="d-flex" role="search">
|
||||
<input
|
||||
class="form-control me-2"
|
||||
type="search"
|
||||
placeholder="Поиск"
|
||||
aria-label="Поиск"
|
||||
/>
|
||||
<button class="btn btn-outline-success" type="submit">Поиск</button>
|
||||
</form>
|
||||
<section>
|
||||
<nav class="navbar navbar-expand-lg bg-body-tertiary">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{% url 'index' %}">Logs Collector</a>
|
||||
<button
|
||||
class="navbar-toggler"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#navbarSupportedContent"
|
||||
aria-controls="navbarSupportedContent"
|
||||
aria-expanded="false"
|
||||
aria-label="Переключатель навигации"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav ml-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
role="button"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
>Tickets</a
|
||||
>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a class="dropdown-item" href="{% url 'index' %}">All</a>
|
||||
</li>
|
||||
{% for platform in platforms %}
|
||||
<li>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
href="{{ platform.get_absolute_url }}"
|
||||
>{{ platform.pretty_name}}</a
|
||||
>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li><hr class="dropdown-divider" /></li>
|
||||
<li><a class="dropdown-item" href="#">Create ticket</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled">Отключенная</a>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="d-flex" role="search">
|
||||
<input
|
||||
class="form-control me-2"
|
||||
type="search"
|
||||
placeholder="Поиск"
|
||||
aria-label="Поиск"
|
||||
/>
|
||||
<button class="btn btn-outline-success" type="submit">Поиск</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</nav>
|
||||
</section>
|
||||
</header>
|
||||
|
37
logs_collector/collector/templates/collector/pagination.html
Normal file
37
logs_collector/collector/templates/collector/pagination.html
Normal file
@ -0,0 +1,37 @@
|
||||
{% if page_obj.has_other_pages %}
|
||||
<nav class="d-flex justify-content-center mt-3" aria-label="...">
|
||||
<ul class="pagination">
|
||||
{% if page_obj.has_previous %}
|
||||
<li class="page-item">
|
||||
<a
|
||||
class="page-link"
|
||||
href="?page={{ page_obj.previous_page_number }}"
|
||||
>Back</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item disabled"><a class="page-link">Back</a></li>
|
||||
{% endif %}
|
||||
{% for page in paginator.page_range %}
|
||||
{% if page_obj.number == page %}
|
||||
<li class="page-item active" aria-current="page">
|
||||
<button class="page-link">{{ page }}</button>
|
||||
</li>
|
||||
{% elif page >= page_obj.number|add:-2 and page <= page_obj.number|add:2%}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="?page={{ page }}">{{ page }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if page_obj.has_next %}
|
||||
<li class="page-item">
|
||||
<a
|
||||
class="page-link"
|
||||
href="?page={{ page_obj.next_page_number }}"
|
||||
>Next</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item disabled"><a class="page-link">Next</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
@ -91,7 +91,9 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% include 'collector/pagination.html' %}
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</main>
|
||||
{% endblock content %}
|
||||
|
@ -21,6 +21,7 @@ class ListAllTickets(generic.ListView):
|
||||
model = Ticket
|
||||
template_name = 'collector/tickets.html'
|
||||
context_object_name = 'tickets'
|
||||
paginate_by = 5
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
@ -33,6 +34,7 @@ class ListPlatformTickets(generic.ListView):
|
||||
template_name = 'collector/tickets.html'
|
||||
context_object_name = 'tickets'
|
||||
allow_empty = False
|
||||
paginate_by = 5
|
||||
|
||||
def get_queryset(self):
|
||||
return Ticket.objects.filter(
|
||||
|
Loading…
Reference in New Issue
Block a user