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 {}
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 {}
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)
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)
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)
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 {}
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 {}
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 {}
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 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)
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)
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)
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)
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)
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)
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)
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)
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)