diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2012-05-20 13:18:42 +0200 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2012-05-20 13:18:42 +0200 |
| commit | 03f86a5adb930eac55dea1e903fb958c002d5bc4 (patch) | |
| tree | e648c4c26b21e05f5ce79eb7afb3d9b638c192c4 /tests | |
| parent | b0c1e5c081472436bf2300af3073cef1df1bd696 (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')
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()), |
