Moved part of the pagination logic from the view to Pagination.
This commit is contained in:
parent
df0380362b
commit
897f82bd26
@ -72,6 +72,7 @@ class BaseReportView(generic.ListView):
|
||||
"""
|
||||
page_no = None
|
||||
page_size = None
|
||||
pagination = None
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
"""Adds object_list to the context.
|
||||
@ -110,7 +111,6 @@ class BaseReportView(generic.ListView):
|
||||
return HttpResponseRedirect(
|
||||
str(UrlBuilder(request.get_full_path())
|
||||
.del_param("page")))
|
||||
print("accounting.views.BaseReportView.get() 1 before")
|
||||
try:
|
||||
r = super(BaseReportView, self) \
|
||||
.get(request, *args, **kwargs)
|
||||
@ -118,15 +118,12 @@ class BaseReportView(generic.ListView):
|
||||
return HttpResponseRedirect(
|
||||
str(UrlBuilder(request.get_full_path())
|
||||
.del_param("page")))
|
||||
print("accounting.views.BaseReportView.get() 2 after")
|
||||
return r
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
print("accounting.views.BaseReportView.get_context_data() 1 before")
|
||||
r = super(BaseReportView, self).get_context_data(**kwargs)
|
||||
print("accounting.views.BaseReportView.get_context_data() 2 after")
|
||||
print(r)
|
||||
return r
|
||||
data = super(BaseReportView, self).get_context_data(**kwargs)
|
||||
data["pagination"] = self.pagination
|
||||
return data
|
||||
|
||||
|
||||
class CashReportView(BaseReportView):
|
||||
@ -141,7 +138,6 @@ class CashReportView(BaseReportView):
|
||||
Returns:
|
||||
List[Record]: The accounting records for the cash report
|
||||
"""
|
||||
print("accounting.views.CashReportView.get_queryset() 1 before")
|
||||
period = PeriodParser(self.kwargs["period_spec"])
|
||||
if self.kwargs["subject_code"] == "0":
|
||||
records = Record.objects.raw(
|
||||
@ -204,8 +200,6 @@ ORDER BY
|
||||
period.end,
|
||||
self.kwargs["subject_code"] + "%",
|
||||
self.kwargs["subject_code"] + "%"])
|
||||
pagination = Pagination(
|
||||
len(records), self.page_no, self.page_size, True)
|
||||
start_no = pagination.page_size * (pagination.page_no - 1)
|
||||
print("accounting.views.CashReportView.get_queryset() 2 after")
|
||||
return records[start_no:start_no + pagination.page_size]
|
||||
self.pagination = Pagination(
|
||||
records, self.page_no, self.page_size, True)
|
||||
return self.pagination.records
|
||||
|
@ -144,17 +144,19 @@ class Pagination:
|
||||
Attributes:
|
||||
page_no (int): The current page number
|
||||
page_size (int): The page size
|
||||
records (Model): The records in the current page
|
||||
"""
|
||||
page_no = None
|
||||
page_size = None
|
||||
records = None
|
||||
|
||||
DEFAULT_PAGE_SIZE = 10
|
||||
|
||||
def __init__(self, count, page_no, page_size, is_reverse=False):
|
||||
def __init__(self, records, page_no, page_size, is_reverse=False):
|
||||
self.page_size = page_size \
|
||||
if page_size is not None \
|
||||
else self.DEFAULT_PAGE_SIZE
|
||||
total_pages = int((count - 1) / self.page_size) + 1
|
||||
total_pages = int((len(records) - 1) / self.page_size) + 1
|
||||
default_page = 1 if not is_reverse else total_pages
|
||||
if page_no == default_page:
|
||||
raise PageNoOutOfRangeException()
|
||||
@ -163,6 +165,8 @@ class Pagination:
|
||||
else default_page
|
||||
if self.page_no > total_pages:
|
||||
raise PageNoOutOfRangeException()
|
||||
start_no = self.page_size * (self.page_no - 1)
|
||||
self.records = records[start_no:start_no + self.page_size]
|
||||
|
||||
|
||||
class PageNoOutOfRangeException(Exception):
|
||||
|
Loading…
Reference in New Issue
Block a user