# Path: seth/paginator.py
# def paginate(qs, page=1, per_page=20, **kwargs):
#     if page < 1:
#         raise PaginationException(u"Page has to be grater or equal 1")
# 
#     if per_page < 0:
#         raise PaginationException(u"Page has to be grater than 0")
# 
#     total = int(qs.count())
# 
#     if total < (page-1) * per_page:
#         page, per_page = 1, 20
# 
#     items = qs.limit(per_page).offset((page - 1) * per_page).all()
# 
#     if not items and page != 1:
#         return False
# 
#     return Pagination(qs, page, per_page, total, items, **kwargs)


from seth.paginator import paginate
        return self.not_allowed()

    def patch(self, **kwargs):
        return self.not_allowed()

    def head(self, **kwargs):
        return self.not_allowed()

    def options(self, **kwargs):
        return self.not_allowed()

    def trace(self, **kwargs):
        return self.not_allowed()

    def connect(self, **kwargs):
        return self.not_allowed()


class QuerySetMixin(object):
    model = None
    paginate = True
    filter_class = None
    lookup_param = u'id'

    def get_model(self):
        raise NotImplementedError

    def get_queryset(self, *args, **kwargs):
        raise NotImplementedError


# Path: seth/paginator.py
# def paginate(qs, page=1, per_page=20, **kwargs):
#     if page < 1:
#         raise PaginationException(u"Page has to be grater or equal 1")
# 
#     if per_page < 0:
#         raise PaginationException(u"Page has to be grater than 0")
# 
#     total = int(qs.count())
# 
#     if total < (page-1) * per_page:
#         page, per_page = 1, 20
# 
#     items = qs.limit(per_page).offset((page - 1) * per_page).all()
# 
#     if not items and page != 1:
#         return False
# 
#     return Pagination(qs, page, per_page, total, items, **kwargs)


# Path: seth/classy/base.py
from seth.paginator import paginate

        return self.not_allowed()

    def patch(self, **kwargs):
        return self.not_allowed()

    def head(self, **kwargs):
        return self.not_allowed()

    def options(self, **kwargs):
        return self.not_allowed()

    def trace(self, **kwargs):
        return self.not_allowed()

    def connect(self, **kwargs):
        return self.not_allowed()


class QuerySetMixin(object):
    model = None
    paginate = True
    filter_class = None
    lookup_param = u'id'

    def get_model(self):
        raise NotImplementedError

    def get_queryset(self, *args, **kwargs):
        raise NotImplementedError


    def filter_queryset(self, qs):