From 3b9d9c8ce16e9525e2e65dd934ad10b3ea43ca1f Mon Sep 17 00:00:00 2001 From: Paul Arthur Date: Thu, 13 Feb 2020 18:59:02 +0000 Subject: [PATCH] ui: use relative links for pagination Change-Id: I6ff79f71d021b6ea6d494fcb8a10e2961f6ed5b7 --- ara/ui/pagination.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/ara/ui/pagination.py b/ara/ui/pagination.py index 8af5cce7..8446e528 100644 --- a/ara/ui/pagination.py +++ b/ara/ui/pagination.py @@ -26,18 +26,42 @@ class LimitOffsetPaginationWithLinks(LimitOffsetPagination): """ Extends LimitOffsetPagination to provide links to first and last pages as well as the limit and offset, if available. + Generates relative links instead of absolute URIs. """ + def get_next_link(self): + if self.offset + self.limit >= self.count: + return None + + url = self.request.get_full_path() + url = replace_query_param(url, self.limit_query_param, self.limit) + + offset = self.offset + self.limit + return replace_query_param(url, self.offset_query_param, offset) + + def get_previous_link(self): + if self.offset <= 0: + return None + + url = self.request.get_full_path() + url = replace_query_param(url, self.limit_query_param, self.limit) + + if self.offset - self.limit <= 0: + return remove_query_param(url, self.offset_query_param) + + offset = self.offset - self.limit + return replace_query_param(url, self.offset_query_param, offset) + def get_first_link(self): if self.offset <= 0: return None - url = self.request.build_absolute_uri() + url = self.request.get_full_path() return remove_query_param(url, self.offset_query_param) def get_last_link(self): if self.offset + self.limit >= self.count: return None - url = self.request.build_absolute_uri() + url = self.request.get_full_path() url = replace_query_param(url, self.limit_query_param, self.limit) offset = self.count - self.limit return replace_query_param(url, self.offset_query_param, offset)