def show_more(context, label=None, loading=settings.LOADING):
    """Show the link to get the next page in a Twitter-like pagination.

    Usage::

        {% show_more %}

    Alternatively you can override the label passed to the default template::

        {% show_more "even more" %}

    You can override the loading text too::

        {% show_more "even more" "working" %}

    Must be called after ``{% paginate objects %}``.
    """
    # This template tag could raise a PaginationError: you have to call
    # *paginate* or *lazy_paginate* before including the showmore template.
    data = utils.get_data_from_context(context)
    page = data['page']
    querystring_key = data['querystring_key']
    request = context['request']

    page_info = {}
    # show the template only if there is a next page
    if page.has_next():
        page_number = page.next_page_number()

        # Generate the querystring.
        querystring = utils.get_querystring_for_page(
            request, page_number, querystring_key,
            default_number=data['default_number'])

        page_info.update({
            'label': label,
            'loading': loading,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        })

        context['next_querystring'] = querystring

    if page.has_previous():
        page_number = page.previous_page_number()
        querystring = utils.get_querystring_for_page(
            request, page_number, querystring_key,
            default_number=data['default_number'])

        context['previous_querystring'] = querystring

    # No next page, nothing to see.
    return page_info
def show_more(context, label=None):
    """
    Show the link to get the next page in a Twitter-like pagination.
    Usage::
    
        {% show_more %}
    
    Alternatively you can override the label passed to the
    default template::
    
        {% show_more "even more" %}
    
    Must be called after {% paginate objects %}.
    """
    # this can raise a PaginationError 
    # (you have to call paginate before including the show more template)
    page = utils.get_page_from_context(context)
    # show the template only if there is a next page
    if page.has_next():
        request = context["request"]
        page_number = page.next_page_number()
        # querystring
        querystring_key = context["endless_querystring_key"]
        querystring = utils.get_querystring_for_page(request, page_number,
            querystring_key, default_number=context["endless_default_number"])
        return {
            'path': context["endless_override_path"] or request.path,
            'querystring_key': querystring_key,
            'querystring': querystring,
            'loading': settings.LOADING,
            'label': label,
        }
    # no next page, nothing to see
    return {}
Esempio n. 3
0
def show_more_table(context, label=None, loading=endless_settings.LOADING):
    # this can raise a PaginationError
    # (you have to call paginate before including the show more template)
    page = utils.get_page_from_context(context)
    # show the template only if there is a next page
    if page.has_next():
        request = context["request"]
        page_number = page.next_page_number()
        # querystring
        querystring_key = context["endless_querystring_key"]
        querystring = utils.get_querystring_for_page(
            request,
            page_number,
            querystring_key,
            default_number=context["endless_default_number"])
        return {
            'path': context["endless_override_path"] or request.path,
            'querystring_key': querystring_key,
            'querystring': querystring,
            'loading': loading,
            'label': label,
            'request': request,
        }
    # no next page, nothing to see
    return {}
Esempio n. 4
0
    def __init__(self,
                 request,
                 number,
                 current_number,
                 total_number,
                 querystring_key,
                 label=None,
                 default_number=1,
                 override_path=None):
        self._request = request
        self.number = number
        self.current_number = current_number
        self.label = utils.text(number) if label is None else label
        self.querystring_key = querystring_key

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number

        self.url = utils.get_querystring_for_page(
            request,
            number,
            self.querystring_key,
            default_number=default_number)
        path = iri_to_uri(override_path or request.path)
        self.path = '{0}{1}'.format(path, self.url)
Esempio n. 5
0
 def test_default_page(self):
     # Ensure the querystring is empty for the default page.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(request,
                                                  3,
                                                  'mypage',
                                                  default_number=3)
     self.assertEqual('', querystring)
Esempio n. 6
0
 def __init__(self, request, number, current_number, total_number, 
     querystring_key, label=None, default_number=1, override_path=None):
     self.number = number
     self.label = unicode(number) if label is None else label
     self.querystring_key = querystring_key
     
     self.is_current = number == current_number
     self.is_first = number == 1
     self.is_last = number == total_number
     
     self.url = utils.get_querystring_for_page(request, number, 
         self.querystring_key, default_number=default_number)
     self.path = "%s%s" % (override_path or request.path, self.url)
def _render_show_more(data, label, loading, page_number, request):
    # Generate the querystring.
    querystring_key = data['querystring_key']
    querystring = utils.get_querystring_for_page(
        request, page_number, querystring_key,
        default_number=data['default_number'])

    return {
        'label': label,
        'loading': loading,
        'path': iri_to_uri(data['override_path'] or request.path),
        'querystring': querystring,
        'querystring_key': querystring_key,
        'request': request,
    }
    def __init__(
            self, request, number, current_number, total_number,
            querystring_key, label=None, default_number=1, override_path=None):
        self._request = request
        self.number = number
        self.label = utils.text(number) if label is None else label
        self.querystring_key = querystring_key

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number

        self.url = utils.get_querystring_for_page(
            request, number, self.querystring_key,
            default_number=default_number)
        path = iri_to_uri(override_path or request.path)
        self.path = '{0}{1}'.format(path, self.url)
Esempio n. 9
0
def show_more(context, label=None, loading=settings.LOADING, class_name=None):
    """Show the link to get the next page in a Twitter-like pagination.

    Usage::

        {% show_more %}

    Alternatively you can override the label passed to the default template::

        {% show_more "even more" %}

    You can override the loading text too::

        {% show_more "even more" "working" %}

    You could pass in the extra CSS style class name as a third argument

       {% show_more "even more" "working" "class_name" %}

    Must be called after ``{% paginate objects %}``.
    """
    # This template tag could raise a PaginationError: you have to call
    # *paginate* or *lazy_paginate* before including the showmore template.
    data = utils.get_data_from_context(context)
    page = data['page']
    # show the template only if there is a next page
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        # Generate the querystring.
        querystring_key = data['querystring_key']
        querystring = utils.get_querystring_for_page(
            request, page_number, querystring_key,
            default_number=data['default_number'])
        return {
            'label': label,
            'loading': loading,
            'class_name': class_name,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        }
    # No next page, nothing to see.
    return {}
Esempio n. 10
0
def show_more(context, label=None, loading=settings.LOADING):
    """
    Show the link to get the next page in a Twitter-like pagination.
    Usage::

        {% show_more %}

    Alternatively you can override the label passed to the
    default template::

        {% show_more "even more" %}

    You can override the loading text too::

        {% show_more "even more" "working" %}

    Must be called after {% paginate objects %}.
    """
    # this can raise a PaginationError
    # (you have to call paginate before including the show more template)
    page = utils.get_page_from_context(context)
    # show the template only if there is a next page
    if page.has_next():
        request = context["request"]
        page_number = page.next_page_number()
        # querystring
        querystring_key = context["endless_querystring_key"]
        querystring = utils.get_querystring_for_page(
            request,
            page_number,
            querystring_key,
            default_number=context["endless_default_number"])
        return {
            'path': context["endless_override_path"] or request.path,
            'querystring_key': querystring_key,
            'querystring': querystring,
            'loading': loading,
            'label': label,
            'request': request,
        }
    # no next page, nothing to see
    return {}
Esempio n. 11
0
def show_more_table(context, label=None, loading=endless_settings.LOADING):
    # this can raise a PaginationError 
    # (you have to call paginate before including the show more template)
    page = utils.get_page_from_context(context)
    # show the template only if there is a next page
    if page.has_next():
        request = context["request"]
        page_number = page.next_page_number()
        # querystring
        querystring_key = context["endless_querystring_key"]
        querystring = utils.get_querystring_for_page(request, page_number,
            querystring_key, default_number=context["endless_default_number"])
        return {
            'path': context["endless_override_path"] or request.path,
            'querystring_key': querystring_key,
            'querystring': querystring,
            'loading': loading,
            'label': label,
            'request': request,
        }
    # no next page, nothing to see
    return {}
Esempio n. 12
0
    def __init__(self,
                 request,
                 number,
                 current_number,
                 total_number,
                 querystring_key,
                 label=None,
                 default_number=1,
                 override_path=None):
        self.number = number
        self.label = unicode(number) if label is None else label
        self.querystring_key = querystring_key

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number

        self.url = utils.get_querystring_for_page(
            request,
            number,
            self.querystring_key,
            default_number=default_number)
        self.path = "%s%s" % (override_path or request.path, self.url)
Esempio n. 13
0
 def test_querystring_key(self):
     # The querystring key is deleted from the querystring if present.
     request = self.factory.get('/?querystring_key=mykey')
     querystring = utils.get_querystring_for_page(request, 5, 'mypage')
     self.assertEqual('?mypage=5', querystring)
Esempio n. 14
0
 def test_composition(self):
     # Ensure existing querystring is correctly preserved.
     request = self.factory.get('/?mypage=1&foo=bar')
     querystring = utils.get_querystring_for_page(request, 4, 'mypage')
     self.assertIn('mypage=4', querystring)
     self.assertIn('foo=bar', querystring)
Esempio n. 15
0
 def test_default_page(self):
     # Ensure the querystring is empty for the default page.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(
         request, 3, 'mypage', default_number=3)
     self.assertEqual('', querystring)
Esempio n. 16
0
 def test_querystring(self):
     # Ensure the querystring is correctly generated from request.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(request, 2, 'mypage')
     self.assertEqual('?mypage=2', querystring)
Esempio n. 17
0
 def per_page_url(self, count):
     return utils.get_querystring_for_page(self._request,
                                           self.number,
                                           self.querystring_key,
                                           default_number=1,
                                           per_page=count)
Esempio n. 18
0
 def test_querystring(self):
     # Ensure the querystring is correctly generated from request.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(request, 2, 'mypage')
     self.assertEqual('?mypage=2', querystring)
Esempio n. 19
0
 def per_page_url(self, count):
     return utils.get_querystring_for_page(
         self._request, self.number, self.querystring_key,
         default_number=1, per_page=count)
Esempio n. 20
0
 def test_composition(self):
     # Ensure existing querystring is correctly preserved.
     request = self.factory.get('/?mypage=1&foo=bar')
     querystring = utils.get_querystring_for_page(request, 4, 'mypage')
     self.assertIn('mypage=4', querystring)
     self.assertIn('foo=bar', querystring)
Esempio n. 21
0
 def test_querystring_key(self):
     # The querystring key is deleted from the querystring if present.
     request = self.factory.get('/?querystring_key=mykey')
     querystring = utils.get_querystring_for_page(request, 5, 'mypage')
     self.assertEqual('?mypage=5', querystring)