# -*- coding: utf-8 -*-
# @Time    : 2017/9/10 10:22
# @Author  : Forec
# @File    : models/pagination.py
# @Project : WildPointer
# @license : Copyright(C), Forec
# @Contact : forec@bupt.edu.cn


from math import ceil


# 自定义内容分页模型
class Pagination(object):
    def __init__(self, page, per_page, total_count):
        self.page = page
        self.per_page = per_page
        self.total_count = total_count

    @property
    def pages(self):
        return int(ceil(self.total_count / float(self.per_page)))

    @property
    def has_prev(self):
        return self.page > 1

    @property
    def has_next(self):
        return self.page < self.pages

    def iter_pages(self, left_edge=2, left_current=2, right_current=5, right_edge=2):
        last = 0
        for num in range(1, self.pages + 1):
            if num <= left_edge or num > self.pages-right_edge or \
               (num+1+left_current > self.page and num < self.page+right_current):
                if last + 1 != num:
                    yield None
                yield num
                last = num
