mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-01 16:24:41 +08:00
44 lines
1.3 KiB
Python
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
|