File: decorators.py

package info (click to toggle)
drf-extensions 0.8.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,308 kB
  • sloc: python: 7,421; makefile: 11
file content (26 lines) | stat: -rw-r--r-- 738 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def paginate(pagination_class=None, **kwargs):
    """
    Decorator that adds a pagination_class to GenericViewSet class.
    Custom pagination class also available.

    Usage :
    from rest_framework.pagination import CursorPagination

    @paginate(pagination_class=CursorPagination, page_size=5, ordering='-created_at')
    class FooViewSet(viewsets.GenericViewSet):
        ...

    """
    assert pagination_class is not None, (
        "@paginate missing required argument: 'pagination_class'"
    )

    class _Pagination(pagination_class):
        def __init__(self):
            self.__dict__.update(kwargs)

    def decorator(_class):
        _class.pagination_class = _Pagination
        return _class

    return decorator