1
0
mirror of https://github.com/django/django.git synced 2025-10-26 07:06:08 +00:00

[1.11.x] Fixed #28284 -- Prevented Paginator's unordered object list warning from evaluating a QuerySet.

Backport of a118287bca from master
This commit is contained in:
orf
2017-06-08 17:29:13 +01:00
committed by Tim Graham
parent 44e29ea1e9
commit f908e9d015
3 changed files with 29 additions and 6 deletions

View File

@@ -331,11 +331,25 @@ class ModelPaginationTests(TestCase):
warning = warns[0]
self.assertEqual(str(warning.message), (
"Pagination may yield inconsistent results with an unordered "
"object_list: <QuerySet [<Article: Article 1>, "
"<Article: Article 2>, <Article: Article 3>, <Article: Article 4>, "
"<Article: Article 5>, <Article: Article 6>, <Article: Article 7>, "
"<Article: Article 8>, <Article: Article 9>]>"
"object_list: <class 'pagination.models.Article'> QuerySet."
))
# The warning points at the Paginator caller (i.e. the stacklevel
# is appropriate).
self.assertEqual(warning.filename, __file__)
def test_paginating_unordered_object_list_raises_warning(self):
"""
Unordered object list warning with an object that has an orderd
attribute but not a model attribute.
"""
class ObjectList():
ordered = False
object_list = ObjectList()
with warnings.catch_warnings(record=True) as warns:
warnings.filterwarnings('always', category=UnorderedObjectListWarning)
Paginator(object_list, 5)
self.assertEqual(len(warns), 1)
self.assertEqual(str(warns[0].message), (
"Pagination may yield inconsistent results with an unordered "
"object_list: {!r}.".format(object_list)
))