Cura/plugins/DigitalLibrary/src/PaginationManager.py
2021-04-20 11:30:49 +02:00

44 lines
1.3 KiB
Python

# Copyright (c) 2021 Ultimaker B.V.
from typing import Optional, Dict, Any
from .PaginationLinks import PaginationLinks
from .PaginationMetadata import PaginationMetadata
from .ResponseMeta import ResponseMeta
class PaginationManager:
def __init__(self, limit: int) -> None:
self.limit = limit # The limit of items per page
self.meta = None # type: Optional[ResponseMeta] # The metadata of the paginated response
self.links = None # type: Optional[PaginationLinks] # The pagination-related links
def setResponseMeta(self, meta: Optional[Dict[str, Any]]) -> None:
self.meta = None
if meta:
page = None
if "page" in meta:
page = PaginationMetadata(**meta["page"])
self.meta = ResponseMeta(page)
def setLinks(self, links: Optional[Dict[str, str]]) -> None:
self.links = PaginationLinks(**links) if links else None
def setLimit(self, new_limit: int) -> None:
"""
Sets the limit of items per page.
:param new_limit: The new limit of items per page
"""
self.limit = new_limit
self.reset()
def reset(self) -> None:
"""
Sets the metadata and links to None.
"""
self.meta = None
self.links = None