diff options
| author | Vytis Banaitis <vytis.banaitis@gmail.com> | 2016-05-05 20:52:54 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-06-04 12:14:02 -0400 |
| commit | 2f9c4e2b6fab3ce08cfbebff79d758196250790c (patch) | |
| tree | 550e125782fed8aed39589882c426b9178f78d4e /tests | |
| parent | 89ca1128840a2ae011109cbf38ea5ee9549f1533 (diff) | |
Fixed #19963 -- Added support for date_hierarchy across relations.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/admin_views/admin.py | 2 | ||||
| -rw-r--r-- | tests/admin_views/models.py | 1 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 20 | ||||
| -rw-r--r-- | tests/modeladmin/tests.py | 23 |
4 files changed, 42 insertions, 4 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index 31f41515bb..2146fa66f2 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -973,7 +973,7 @@ site.register(Pizza, PizzaAdmin) site.register(Topping, ToppingAdmin) site.register(Album, AlbumAdmin) site.register(Question) -site.register(Answer) +site.register(Answer, date_hierarchy='question__posted') site.register(PrePopulatedPost, PrePopulatedPostAdmin) site.register(ComplexSortedPerson, ComplexSortedPersonAdmin) site.register(FilteredManager, CustomManagerAdmin) diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py index 301955efd8..b6ec1b6c31 100644 --- a/tests/admin_views/models.py +++ b/tests/admin_views/models.py @@ -621,6 +621,7 @@ class WorkHour(models.Model): class Question(models.Model): question = models.CharField(max_length=20) + posted = models.DateField(default=datetime.date.today) @python_2_unicode_compatible diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 281084a8a1..6455b210b2 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -5331,6 +5331,26 @@ class DateHierarchyTests(TestCase): self.assert_non_localized_year(response, 2003) self.assert_non_localized_year(response, 2005) + def test_related_field(self): + questions_data = ( + # (posted data, number of answers), + (datetime.date(2001, 1, 30), 0), + (datetime.date(2003, 3, 15), 1), + (datetime.date(2005, 5, 3), 2), + ) + for date, answer_count in questions_data: + question = Question.objects.create(posted=date) + for i in range(answer_count): + question.answer_set.create() + + response = self.client.get(reverse('admin:admin_views_answer_changelist')) + for date, answer_count in questions_data: + link = '?question__posted__year=%d"' % (date.year,) + if answer_count > 0: + self.assertContains(response, link) + else: + self.assertNotContains(response, link) + @override_settings(ROOT_URLCONF='admin_views.urls') class AdminCustomSaveRelatedTests(TestCase): diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py index 990ed9ab32..40ea025baf 100644 --- a/tests/modeladmin/tests.py +++ b/tests/modeladmin/tests.py @@ -1175,9 +1175,10 @@ class DateHierarchyCheckTests(CheckTestCase): self.assertIsInvalid( ValidationTestModelAdmin, ValidationTestModel, - ("The value of 'date_hierarchy' refers to 'non_existent_field', which " - "is not an attribute of 'modeladmin.ValidationTestModel'."), - 'admin.E127') + "The value of 'date_hierarchy' refers to 'non_existent_field', which " + "does not refer to a Field.", + 'admin.E127' + ) def test_invalid_field_type(self): class ValidationTestModelAdmin(ModelAdmin): @@ -1194,6 +1195,22 @@ class DateHierarchyCheckTests(CheckTestCase): self.assertIsValid(ValidationTestModelAdmin, ValidationTestModel) + def test_related_valid_case(self): + class ValidationTestModelAdmin(ModelAdmin): + date_hierarchy = 'band__sign_date' + + self.assertIsValid(ValidationTestModelAdmin, ValidationTestModel) + + def test_related_invalid_field_type(self): + class ValidationTestModelAdmin(ModelAdmin): + date_hierarchy = 'band__name' + + self.assertIsInvalid( + ValidationTestModelAdmin, ValidationTestModel, + "The value of 'date_hierarchy' must be a DateField or DateTimeField.", + 'admin.E128' + ) + class OrderingCheckTests(CheckTestCase): |
