コード例 #1
0
ファイル: pagination.py プロジェクト: rjusher/djsqla-rest
    def get_html_context(self):
        base_url = self.request.build_absolute_uri()
        current = _divide_with_ceil(self.offset, self.limit) + 1
        # The number of pages is a little bit fiddly.
        # We need to sum both the number of pages from current offset to end
        # plus the number of pages up to the current offset.
        # When offset is not strictly divisible by the limit then we may
        # end up introducing an extra page as an artifact.
        final = (
            _divide_with_ceil(self.count - self.offset, self.limit) +
            _divide_with_ceil(self.offset, self.limit)
        )

        def page_number_to_url(page_number):
            if page_number == 1:
                return remove_query_param(base_url, self.offset_query_param)
            else:
                offset = self.offset + ((page_number - current) * self.limit)
                return replace_query_param(base_url, self.offset_query_param, offset)

        page_numbers = _get_displayed_page_numbers(current, final)
        page_links = _get_page_links(page_numbers, current, page_number_to_url)

        return {
            'previous_url': self.get_previous_link(),
            'next_url': self.get_next_link(),
            'page_links': page_links
        }
コード例 #2
0
ファイル: pagination.py プロジェクト: ynsa/MoneyTime
    def get_html_context(self):
        base_url = self.request.build_absolute_uri()

        def page_number_to_url(page_number):
            if page_number == 1:
                return remove_query_param(base_url, self.page_query_param)
            else:
                return replace_query_param(base_url, self.page_query_param, page_number)

        if hasattr(self.page, 'number'):

            current = self.page.number
            final = self.page.paginator.num_pages
            page_numbers = _get_displayed_page_numbers(current, final)
            page_links = _get_page_links(page_numbers, current, page_number_to_url)

            return {
                'previous_url': self.get_previous_link(),
                'next_url': self.get_next_link(),
                'page_links': page_links
            }
        else:
            return {
                'previous_url': '',
                'next_url': '',
                'page_links': ''
            }
コード例 #3
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        page_numbers = pagination._get_displayed_page_numbers(
            self.cards.number, self.cards.paginator.num_pages)

        context.update({'cards': self.cards, 'page_numbers': page_numbers})
        return context
コード例 #4
0
 def get_paginated_response(self, data):
     """Overwrite default pagination to include numbers for pages."""
     return Response(OrderedDict([
         ('count', self.page.paginator.count),
         ('numbers', pagination._get_displayed_page_numbers(
             self.page.number, self.page.paginator.num_pages)),
         ('next', self.get_next_link()),
         ('previous', self.get_previous_link()),
         ('results', data),
     ]))
コード例 #5
0
    def get_page_info(self):
        current = self.page.number
        page_numbers = _get_displayed_page_numbers(
            current, self.page.paginator.num_pages)
        page_links = _get_page_links(page_numbers, current,
                                     self.page_number_to_url)

        return [{
            'number': number,
            'link': link.url
        } for number, link in zip(page_numbers, page_links)]
コード例 #6
0
ファイル: pagination.py プロジェクト: wervlad/bookstore
    def get_paginated_response(self, data):
        base_url = self.request.get_full_path()

        def page_number_to_url(pnum):
            return replace_query_param(base_url, self.page_query_param, pnum)

        current = self.page.number
        final = self.page.paginator.num_pages
        page_numbers = _get_displayed_page_numbers(current, final)
        page_links = _get_page_links(page_numbers, current, page_number_to_url)

        return Response(
            OrderedDict([("page_links", page_links), ("results", data)]))
コード例 #7
0
def get_page_links(request, page, page_query_param='page'):

    base_url = request.build_absolute_uri()

    def page_number_to_url(page_number):
        if page_number == 1:
            return remove_query_param(base_url, page_query_param)
        else:
            return replace_query_param(base_url, page_query_param, page_number)

    current = page.number
    final = page.paginator.num_pages
    page_numbers = _get_displayed_page_numbers(current, final)
    return _get_page_links(page_numbers, current, page_number_to_url)
コード例 #8
0
ファイル: views.py プロジェクト: soltanoff/drf_vue_template
    def get_paginated_response(self, data):
        current = self.page.number
        page_numbers = _get_displayed_page_numbers(
            current, self.page.paginator.num_pages)
        page_links = _get_page_links(page_numbers, current,
                                     self.page_number_to_url)

        return Response({
            'pages_info': [{
                'number': number,
                'link': link.url
            } for number, link in zip(page_numbers, page_links)],
            'articles':
            data,
        })
コード例 #9
0
    def get_paginated_response(self, data):
        base_url = self.request.build_absolute_uri()

        def page_number_to_url(page_number):
            if page_number == 1:
                return remove_query_param(base_url, self.page_query_param)
            else:
                return replace_query_param(base_url, self.page_query_param,
                                           page_number)

        response = {}

        if ps.INCLUDE_COUNT:
            response[ps.LABEL_COUNT] = self.page.paginator.count

        if ps.INCLUDE_NEXT:
            response[ps.LABEL_NEXT] = self.get_next_link()

        if ps.INCLUDE_PREVIOUS:
            response[ps.LABEL_PREVIOUS] = self.get_previous_link()

        if ps.INCLUDE_NEXT_PAGE_NUMBER:
            response[ps.LABEL_NEXT_PAGE_NUMBER] = (
                self.page.next_page_number() if self.page.has_next() else None)

        if ps.INCLUDE_PREVIOUS_PAGE_NUMBER:
            response[ps.LABEL_PREVIOUS_PAGE_NUMBER] = (
                self.page.previous_page_number()
                if self.page.has_previous() else None)

        if ps.INCLUDE_PAGE_SIZE:
            response[ps.LABEL_PAGE_SIZE] = self.get_page_size(self.request)

        if ps.INCLUDE_RESULTS:
            response[ps.LABEL_RESULTS] = data

        if ps.INCLUDE_PAGE_LINKS:
            current = self.page.number
            final = self.page.paginator.num_pages
            page_numbers = _get_displayed_page_numbers(current, final)
            page_links = _get_page_links(page_numbers, current,
                                         page_number_to_url)
            response[ps.LABEL_PAGE_LINKS] = page_links

        if ps.INCLUDE_CURRENT_PAGE_NUMBER:
            response[ps.LABEL_CURRENT_PAGE_NUMBER] = self.page.number

        return Response(response)
コード例 #10
0
ファイル: pagination.py プロジェクト: rjusher/djsqla-rest
    def get_html_context(self):
        base_url = self.request.build_absolute_uri()

        def page_number_to_url(page_number):
            if page_number == 1:
                return remove_query_param(base_url, self.page_query_param)
            else:
                return replace_query_param(base_url, self.page_query_param, page_number)

        current = self.page.number
        final = self.page.paginator.num_pages
        page_numbers = _get_displayed_page_numbers(current, final)
        page_links = _get_page_links(page_numbers, current, page_number_to_url)

        return {
            'previous_url': self.get_previous_link(),
            'next_url': self.get_next_link(),
            'page_links': page_links
        }
コード例 #11
0
    def get_html_context(self):
        base_url = self.request.build_absolute_uri()

        if self.limit:
            current = _divide_with_ceil(self.offset, self.limit) + 1

            # The number of pages is a little bit fiddly.
            # We need to sum both the number of pages from current offset to end
            # plus the number of pages up to the current offset.
            # When offset is not strictly divisible by the limit then we may
            # end up introducing an extra page as an artifact.
            final = (
                _divide_with_ceil(self.count - self.offset, self.limit) +
                _divide_with_ceil(self.offset, self.limit)
            )

            if final < 1:
                final = 1
        else:
            current = 1
            final = 1

        if current > final:
            current = final

        def page_number_to_url(page_number):
            if page_number == 1:
                return remove_query_param(base_url, self.offset_query_param)
            else:
                offset = self.offset + ((page_number - current) * self.limit)
                return replace_query_param(base_url, self.offset_query_param, offset)

        page_numbers = _get_displayed_page_numbers(current, final)
        page_links = _get_page_links(page_numbers, current, page_number_to_url)

        return {
            'previous_url': self.get_previous_link(),
            'next_url': self.get_next_link(),
            'page_links': page_links
        }
コード例 #12
0
    def get_paginated_response(self, data):
        base_url = self.request.build_absolute_uri()

        def page_number_to_url(page_number):
            if page_number == 1:
                return remove_query_param(base_url, self.page_query_param)
            else:
                return replace_query_param(base_url, self.page_query_param,
                                           page_number)

        current = self.page.number
        final = self.page.paginator.num_pages
        page_numbers = _get_displayed_page_numbers(current, final)
        page_links = _get_page_links(page_numbers, current, page_number_to_url)

        return Response(
            OrderedDict([
                ('count', self.page.paginator.count),
                ('next', self.get_next_link()),
                ('previous', self.get_previous_link()),
                ('page_links', page_links),
                ('results', data),
            ]))