diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-04-28 12:50:22 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-04-28 14:25:24 +0200 |
commit | cd7385b0e6a35c2620c636e0323137fab7bc505d (patch) | |
tree | d1e3c189fa524bf801c2474b36bd2a5c45a41f30 /ishtar_common/views.py | |
parent | add3d33aa47b0be47da6b9d6bffb8d6d0f649fed (diff) | |
download | Ishtar-cd7385b0e6a35c2620c636e0323137fab7bc505d.tar.bz2 Ishtar-cd7385b0e6a35c2620c636e0323137fab7bc505d.zip |
🐛 old import list: fix pagination (refs #6268)
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 71076e52d..4a487ab90 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1897,11 +1897,46 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): imprt.unarchive(action) return HttpResponseRedirect(reverse(self.current_url)) + def _get_page_range(self): + page_range = [] + # same algo as ishtar_common/static/js/ishtar.js render_gallery + # TODO: harmonization... + + page_range.append(_("Previous")) + page_total = (self.imports_len // self.page_step) + 1 + page_range.append(1) + if self.current_page < 5: + for idx_page in range(2, 6): + if idx_page > page_total: + break + page_range.append(idx_page) + if page_total > 5: + page_range.append("...") + page_range.append(page_total) + else: + page_range.append("...") + if page_total > (self.current_page - 2): + page_range.append(self.current_page - 3) + if page_total > (self.current_page - 3): + page_range.append(self.current_page - 2) + page_range.append(self.current_page - 1) + page_range.append(self.current_page) + if page_total > self.current_page: + page_range.append(self.current_page + 1) + if page_total < (self.current_page + 3): + for idx_page in range(self.current_page + 2, page_total + 1): + page_range.append(idx_page) + else: + page_range.append("...") + page_range.append(page_total) + page_range.append(_("Next")) + return page_range + 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)) + dct["page_range"] = self._get_page_range() add_import_perm = self.request.user.ishtaruser.has_permission( "ishtar_common.add_import" ) |