diff options
| author | Gary Wilson Jr <gary.wilson@gmail.com> | 2008-07-02 04:31:28 +0000 |
|---|---|---|
| committer | Gary Wilson Jr <gary.wilson@gmail.com> | 2008-07-02 04:31:28 +0000 |
| commit | 54d50ef5c890242a8516346ea9ab97092c3fa8c1 (patch) | |
| tree | 7e89e37294e4c844d5c7185371f41cf9a0039124 | |
| parent | bcb1c6dc7167039e715b3399bcc46cbeb5f2d8d1 (diff) | |
Made legacy `ObjectPaginator` truly backwards-compatible by catching both `AttributeError` and `TypeError` in `_get_count` as it did before
[7306]. Tests included.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7819 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/core/paginator.py | 5 | ||||
| -rw-r--r-- | tests/modeltests/pagination/models.py | 23 |
2 files changed, 27 insertions, 1 deletions
diff --git a/django/core/paginator.py b/django/core/paginator.py index 04cc4bf481..5fc6c80812 100644 --- a/django/core/paginator.py +++ b/django/core/paginator.py @@ -173,7 +173,10 @@ class ObjectPaginator(Paginator): if self._count is None: try: self._count = self.object_list.count() - except TypeError: + except (AttributeError, TypeError): + # AttributeError if object_list has no count() method. + # TypeError if object_list.count() requires arguments + # (i.e. is of type list). self._count = len(self.object_list) return self._count count = property(_get_count) diff --git a/tests/modeltests/pagination/models.py b/tests/modeltests/pagination/models.py index 277c5961e3..1f08a32903 100644 --- a/tests/modeltests/pagination/models.py +++ b/tests/modeltests/pagination/models.py @@ -200,6 +200,29 @@ InvalidPage: ... >>> paginator.page_range [1] +# ObjectPaginator can be passed lists too. +>>> paginator = ObjectPaginator([1, 2, 3], 5) +>>> paginator.hits +3 +>>> paginator.pages +1 +>>> paginator.page_range +[1] + + +# ObjectPaginator can be passed other objects with a count() method. +>>> class Container: +... def __len__(self): +... return 42 +>>> paginator = ObjectPaginator(Container(), 10) +>>> paginator.hits +42 +>>> paginator.pages +5 +>>> paginator.page_range +[1, 2, 3, 4, 5] + + ################## # Orphan support # ################## |
