Moved the pagination and the page number out of range error from the accounting application to the Mia core application.
This commit is contained in:
parent
c0f664761e
commit
d48d1b017a
@ -38,43 +38,3 @@ class PeriodParser:
|
|||||||
self.end = period_spec + "-30"
|
self.end = period_spec + "-30"
|
||||||
|
|
||||||
|
|
||||||
class Pagination:
|
|
||||||
"""The pagination.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
count (int): The total number of records
|
|
||||||
page_no (int): The specified page number
|
|
||||||
page_size (int): The specified number of records per page
|
|
||||||
is_reverse (bool): Whether we should display the last
|
|
||||||
page first
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
PageNoOutOfRangeError: if the specified page number is out
|
|
||||||
of range or is redundant.
|
|
||||||
|
|
||||||
Attributes:
|
|
||||||
page_no (int): The current page number
|
|
||||||
page_size (int): The page size
|
|
||||||
"""
|
|
||||||
page_no = None
|
|
||||||
page_size = None
|
|
||||||
|
|
||||||
DEFAULT_PAGE_SIZE = 10
|
|
||||||
|
|
||||||
def __init__(self, count, 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
|
|
||||||
default_page = 1 if not is_reverse else total_pages
|
|
||||||
if page_no == default_page:
|
|
||||||
raise PageNoOutOfRangeError()
|
|
||||||
self.page_no = page_no \
|
|
||||||
if page_no is not None \
|
|
||||||
else default_page
|
|
||||||
if self.page_no > total_pages:
|
|
||||||
raise PageNoOutOfRangeError()
|
|
||||||
|
|
||||||
|
|
||||||
class PageNoOutOfRangeError(Exception):
|
|
||||||
pass
|
|
||||||
|
@ -28,11 +28,11 @@ from django.views import generic
|
|||||||
from django.views.decorators.http import require_GET
|
from django.views.decorators.http import require_GET
|
||||||
|
|
||||||
from accounting.models import Record
|
from accounting.models import Record
|
||||||
from accounting.utils import PeriodParser, Pagination, \
|
from accounting.utils import PeriodParser
|
||||||
PageNoOutOfRangeError
|
|
||||||
from mia import settings
|
from mia import settings
|
||||||
from mia_core.digest_auth import digest_login_required
|
from mia_core.digest_auth import digest_login_required
|
||||||
from mia_core.utils import UrlBuilder
|
from mia_core.utils import UrlBuilder, Pagination, \
|
||||||
|
PageNoOutOfRangeError
|
||||||
|
|
||||||
|
|
||||||
@require_GET
|
@require_GET
|
||||||
|
@ -125,3 +125,45 @@ class UrlBuilder:
|
|||||||
return "%s=%s" % (
|
return "%s=%s" % (
|
||||||
urllib.parse.quote(self.name),
|
urllib.parse.quote(self.name),
|
||||||
urllib.parse.quote(self.value))
|
urllib.parse.quote(self.value))
|
||||||
|
|
||||||
|
|
||||||
|
class Pagination:
|
||||||
|
"""The pagination.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
count (int): The total number of records
|
||||||
|
page_no (int): The specified page number
|
||||||
|
page_size (int): The specified number of records per page
|
||||||
|
is_reverse (bool): Whether we should display the last
|
||||||
|
page first
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
PageNoOutOfRangeError: if the specified page number is out
|
||||||
|
of range or is redundant.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
page_no (int): The current page number
|
||||||
|
page_size (int): The page size
|
||||||
|
"""
|
||||||
|
page_no = None
|
||||||
|
page_size = None
|
||||||
|
|
||||||
|
DEFAULT_PAGE_SIZE = 10
|
||||||
|
|
||||||
|
def __init__(self, count, 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
|
||||||
|
default_page = 1 if not is_reverse else total_pages
|
||||||
|
if page_no == default_page:
|
||||||
|
raise PageNoOutOfRangeError()
|
||||||
|
self.page_no = page_no \
|
||||||
|
if page_no is not None \
|
||||||
|
else default_page
|
||||||
|
if self.page_no > total_pages:
|
||||||
|
raise PageNoOutOfRangeError()
|
||||||
|
|
||||||
|
|
||||||
|
class PageNoOutOfRangeError(Exception):
|
||||||
|
pass
|
Loading…
Reference in New Issue
Block a user