diff -r 261778de26ff -r 620f9b141567 thirdparty/google_appengine/lib/django/tests/modeltests/pagination/models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/thirdparty/google_appengine/lib/django/tests/modeltests/pagination/models.py Tue Aug 26 21:49:54 2008 +0000 @@ -0,0 +1,80 @@ +""" +30. Object pagination + +Django provides a framework for paginating a list of objects in a few lines +of code. This is often useful for dividing search results or long lists of +objects into easily readable pages. +""" + +from django.db import models + +class Article(models.Model): + headline = models.CharField(maxlength=100, default='Default headline') + pub_date = models.DateTimeField() + + def __str__(self): + return self.headline + +__test__ = {'API_TESTS':""" +# prepare a list of objects for pagination +>>> from datetime import datetime +>>> for x in range(1, 10): +... a = Article(headline='Article %s' % x, pub_date=datetime(2005, 7, 29)) +... a.save() + +# create a basic paginator, 5 articles per page +>>> from django.core.paginator import ObjectPaginator, InvalidPage +>>> paginator = ObjectPaginator(Article.objects.all(), 5) + +# the paginator knows how many hits and pages it contains +>>> paginator.hits +9 + +>>> paginator.pages +2 + +# get the first page (zero-based) +>>> paginator.get_page(0) +[, , , , ] + +# get the second page +>>> paginator.get_page(1) +[, , , ] + +# does the first page have a next or previous page? +>>> paginator.has_next_page(0) +True + +>>> paginator.has_previous_page(0) +False + +# check the second page +>>> paginator.has_next_page(1) +False + +>>> paginator.has_previous_page(1) +True + +>>> paginator.first_on_page(0) +1 +>>> paginator.first_on_page(1) +6 +>>> paginator.last_on_page(0) +5 +>>> paginator.last_on_page(1) +9 + +# Add a few more records to test out the orphans feature. +>>> for x in range(10, 13): +... Article(headline="Article %s" % x, pub_date=datetime(2006, 10, 6)).save() + +# With orphans set to 3 and 10 items per page, we should get all 12 items on a single page: +>>> paginator = ObjectPaginator(Article.objects.all(), 10, orphans=3) +>>> paginator.pages +1 + +# With orphans only set to 1, we should get two pages: +>>> paginator = ObjectPaginator(Article.objects.all(), 10, orphans=1) +>>> paginator.pages +2 +"""}