diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-02 14:55:37 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-02 14:55:37 +0200 |
commit | 20a963495efeb3df19f19e3c1f15902adf823a6d (patch) | |
tree | 7f3ab146bac53f9ac02675331f8116f2d8500a5f | |
parent | b3fe436d1bd499da970fbaf80ec3dc151dc80f79 (diff) | |
download | Ishtar-20a963495efeb3df19f19e3c1f15902adf823a6d.tar.bz2 Ishtar-20a963495efeb3df19f19e3c1f15902adf823a6d.zip |
✨ add pagination to old imports page
-rw-r--r-- | ishtar_common/static/media/styles.css | 5 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/import_list.html | 11 | ||||
-rw-r--r-- | ishtar_common/views.py | 14 |
3 files changed, 30 insertions, 0 deletions
diff --git a/ishtar_common/static/media/styles.css b/ishtar_common/static/media/styles.css index 837f5d752..20318b9bb 100644 --- a/ishtar_common/static/media/styles.css +++ b/ishtar_common/static/media/styles.css @@ -156,6 +156,11 @@ table.dataTable tbody th, table.dataTable tbody td { background: none; border: 1px solid transparent; } + +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled .page-link { + background-color: #dee2e6; +} + .dataTables_scrollBody:hover{ cursor: pointer; } diff --git a/ishtar_common/templates/ishtar/import_list.html b/ishtar_common/templates/ishtar/import_list.html index ec5e714de..ca3edef4b 100644 --- a/ishtar_common/templates/ishtar/import_list.html +++ b/ishtar_common/templates/ishtar/import_list.html @@ -27,6 +27,17 @@ <i class="fa fa-plus"></i> {% trans 'import (group)' %} </a>{% endif %} </div>{% endif %} + +{% if current_page %} +<div class='dataTables_wrapper'> + <div class='dataTables_paginate'><ul> + {% for page_n in page_range %}<li class="paginate_button page-item{% if page_n == '...' or page_n == current_page %} disabled{% endif %}"> + <a href="{% if page_n == '...' or page_n == current_page %}#{% else %}?page={{page_n}}{% endif %}" tabindex="0" class="page-link">{{page_n}}</a> + </li>{% endfor %} + </ul></div> +</div> +{% endif %} + <div id="import-container"> {% include "ishtar/import_table.html" %} </div> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 6a25fd904..f35881575 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1644,6 +1644,8 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): model = models.Import page_name = _("Current imports") current_url = "current_imports" + pagination = False + page_step = 20 def _queryset_filter(self, query): return query.exclude(state="AC") @@ -1668,6 +1670,14 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): ) imprt.action_list = imprt.get_actions(can_edit=can_edit, can_delete=can_delete) imports.append(imprt) + self.imports_len = len(imports) + self.current_page = 0 + if self.imports_len > self.page_step and self.pagination: + self.current_page = int(self.request.GET.get("page", 1)) + self.page_number = int((self.imports_len - 1) / self.page_step) + 1 + min_page = (self.current_page - 1) * self.page_step + max_page = (self.current_page * self.page_step) + imports = imports[min_page:max_page] return imports def post(self, request, *args, **kwargs): @@ -1743,6 +1753,9 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): def get_context_data(self, **kwargs): dct = super().get_context_data(**kwargs) + if self.imports_len > self.page_step and self.pagination: + dct["current_page"] = self.current_page + dct["page_range"] = (n + 1 for n in range(self.page_number)) add_import_perm = self.request.user.ishtaruser.has_right("add_import", session=self.request.session) import_type_table = models.ImporterType.objects.filter(available=True, is_import=True, type='tab') import_type_gis = models.ImporterType.objects.filter(available=True, is_import=True, type='gis') @@ -2173,6 +2186,7 @@ class ImportListTableView(ImportListView): class ImportOldListView(ImportListView): page_name = _("Old imports") current_url = "old_imports" + pagination = True def _queryset_filter(self, query): return query.filter(state="AC") |