from marshmallow import fields, validate from server.constants import DEFAULT_PAGINATION_LIMIT def get_pagination_mixin( page_offset: int or None = 0, page_limit: int or None = DEFAULT_PAGINATION_LIMIT, max_limit: int or None = None ) -> type: class PaginationParams: offset = fields.Integer(validate=validate.Range(min=0), missing=page_offset) limit = fields.Integer(validate=validate.Range(min=1, max=max_limit), missing=page_limit) return PaginationParams PaginationMixin = get_pagination_mixin() class PaginationResultMixin: count = fields.Integer(default=0) next = fields.String(default=None) previous = fields.String(default=None)