summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2012-05-20 13:18:42 +0200
committerAymeric Augustin <aymeric.augustin@m4x.org>2012-05-20 13:18:42 +0200
commit03f86a5adb930eac55dea1e903fb958c002d5bc4 (patch)
treee648c4c26b21e05f5ce79eb7afb3d9b638c192c4 /tests
parentb0c1e5c081472436bf2300af3073cef1df1bd696 (diff)
Fixed #18354 -- Performance issue in CBV.
Prevented repeating a query twice when the model isn't ordered by -date_field (in Meta), allow_empty is False and pagination isn't enabled.
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/generic_views/dates.py14
-rw-r--r--tests/regressiontests/generic_views/templates/generic_views/book_archive.html2
-rw-r--r--tests/regressiontests/generic_views/templates/generic_views/book_archive_year.html2
-rw-r--r--tests/regressiontests/generic_views/urls.py5
4 files changed, 19 insertions, 4 deletions
diff --git a/tests/regressiontests/generic_views/dates.py b/tests/regressiontests/generic_views/dates.py
index 59833a780c..8f82dddbcf 100644
--- a/tests/regressiontests/generic_views/dates.py
+++ b/tests/regressiontests/generic_views/dates.py
@@ -86,10 +86,15 @@ class ArchiveIndexViewTests(TestCase):
# 1 query for years list + 1 query for books
with self.assertNumQueries(2):
self.client.get('/dates/books/')
- # same as above + 1 query to test if books exist
- with self.assertNumQueries(3):
+ # same as above + 1 query to test if books exist + 1 query to count them
+ with self.assertNumQueries(4):
self.client.get('/dates/books/paginated/')
+ def test_no_duplicate_query(self):
+ # Regression test for #18354
+ with self.assertNumQueries(2):
+ self.client.get('/dates/books/reverse/')
+
def test_datetime_archive_view(self):
BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))
res = self.client.get('/dates/booksignings/')
@@ -155,6 +160,11 @@ class YearArchiveViewTests(TestCase):
res = self.client.get('/dates/books/no_year/')
self.assertEqual(res.status_code, 404)
+ def test_no_duplicate_query(self):
+ # Regression test for #18354
+ with self.assertNumQueries(2):
+ self.client.get('/dates/books/2008/reverse/')
+
def test_datetime_year_view(self):
BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))
res = self.client.get('/dates/booksignings/2008/')
diff --git a/tests/regressiontests/generic_views/templates/generic_views/book_archive.html b/tests/regressiontests/generic_views/templates/generic_views/book_archive.html
index 5fc11149bd..03f45a38c2 100644
--- a/tests/regressiontests/generic_views/templates/generic_views/book_archive.html
+++ b/tests/regressiontests/generic_views/templates/generic_views/book_archive.html
@@ -1 +1 @@
-Archive of books from {{ date_list }}. \ No newline at end of file
+Archive of books from {{ date_list }}. {{ object_list|length }} books found.
diff --git a/tests/regressiontests/generic_views/templates/generic_views/book_archive_year.html b/tests/regressiontests/generic_views/templates/generic_views/book_archive_year.html
index 7705914e97..fde198dcaf 100644
--- a/tests/regressiontests/generic_views/templates/generic_views/book_archive_year.html
+++ b/tests/regressiontests/generic_views/templates/generic_views/book_archive_year.html
@@ -1 +1 @@
-Archive of books from {{ year }}. \ No newline at end of file
+Archive of books from {{ year }}. {{ object_list|length }} books found.
diff --git a/tests/regressiontests/generic_views/urls.py b/tests/regressiontests/generic_views/urls.py
index 96d77e7ed1..14d4f685a6 100644
--- a/tests/regressiontests/generic_views/urls.py
+++ b/tests/regressiontests/generic_views/urls.py
@@ -4,6 +4,7 @@ from django.conf.urls import patterns, url
from django.views.decorators.cache import cache_page
from django.views.generic import TemplateView
+from . import models
from . import views
@@ -108,6 +109,8 @@ urlpatterns = patterns('',
views.BookArchive.as_view(queryset=None)),
(r'^dates/books/paginated/$',
views.BookArchive.as_view(paginate_by=10)),
+ (r'^dates/books/reverse/$',
+ views.BookArchive.as_view(queryset=models.Book.objects.order_by('pubdate'))),
(r'^dates/booksignings/$',
views.BookSigningArchive.as_view()),
@@ -160,6 +163,8 @@ urlpatterns = patterns('',
views.BookYearArchive.as_view(make_object_list=True, paginate_by=30)),
(r'^dates/books/no_year/$',
views.BookYearArchive.as_view()),
+ (r'^dates/books/(?P<year>\d{4})/reverse/$',
+ views.BookYearArchive.as_view(queryset=models.Book.objects.order_by('pubdate'))),
(r'^dates/booksignings/(?P<year>\d{4})/$',
views.BookSigningYearArchive.as_view()),