diff options
| author | Ben Davis <bendavis78@gmail.com> | 2014-02-18 16:44:33 -0600 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-03-25 09:33:13 -0400 |
| commit | 16afffffe87bf8b7de6403329937433ac5096697 (patch) | |
| tree | a158a517c521c5a2a579b5d97aec5d1ff2ca1ef3 /tests/admin_views | |
| parent | 35ed792cf248d6b245e299d13fe47b56f4c6bf42 (diff) | |
Fixed #22087 -- Made AdminReadonlyField respect ModelForm Meta overrides.
Diffstat (limited to 'tests/admin_views')
| -rw-r--r-- | tests/admin_views/admin.py | 19 | ||||
| -rw-r--r-- | tests/admin_views/models.py | 7 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 14 |
3 files changed, 38 insertions, 2 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index a392daf293..cd9ce2bf17 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -35,7 +35,7 @@ from .models import (Article, Chapter, Child, Parent, Picture, Widget, UnchangeableObject, UserMessenger, Simple, Choice, ShortMessage, Telegram, FilteredManager, EmptyModelHidden, EmptyModelVisible, EmptyModelMixin, State, City, Restaurant, Worker, ParentWithDependentChildren, - DependentChild, StumpJoke) + DependentChild, StumpJoke, FieldOverridePost) def callable_year(dt_value): @@ -435,6 +435,22 @@ class PostAdmin(admin.ModelAdmin): value.short_description = 'Value in $US' +class FieldOverridePostForm(forms.ModelForm): + model = FieldOverridePost + + class Meta: + help_texts = { + 'posted': 'Overridden help text for the date', + } + labels = { + 'public': 'Overridden public label', + } + + +class FieldOverridePostAdmin(PostAdmin): + form = FieldOverridePostForm + + class CustomChangeList(ChangeList): def get_queryset(self, request): return self.root_queryset.filter(pk=9999) # Does not exist @@ -833,6 +849,7 @@ site.register(Recommender) site.register(Collector, CollectorAdmin) site.register(Category, CategoryAdmin) site.register(Post, PostAdmin) +site.register(FieldOverridePost, FieldOverridePostAdmin) site.register(Gadget, GadgetAdmin) site.register(Villain) site.register(SuperVillain) diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py index c729f6b90a..fb72b12717 100644 --- a/tests/admin_views/models.py +++ b/tests/admin_views/models.py @@ -438,6 +438,13 @@ class Post(models.Model): return "Very awesome." +# Proxy model to test overridden fields attrs on Post model so as not to +# interfere with other tests. +class FieldOverridePost(Post): + class Meta: + proxy = True + + @python_2_unicode_compatible class Gadget(models.Model): name = models.CharField(max_length=100) diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index a88117fa6f..39a79c0614 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -52,7 +52,7 @@ from .models import (Article, BarAccount, CustomArticle, EmptyModel, FooAccount, Report, MainPrepopulated, RelatedPrepopulated, UnorderedObject, Simple, UndeletableObject, UnchangeableObject, Choice, ShortMessage, Telegram, Pizza, Topping, FilteredManager, City, Restaurant, Worker, - ParentWithDependentChildren, Character) + ParentWithDependentChildren, Character, FieldOverridePost) from .admin import site, site2, CityAdmin @@ -3693,6 +3693,18 @@ class ReadonlyTest(TestCase): response = self.client.get('/test_admin/admin/admin_views/topping/add/') self.assertEqual(response.status_code, 200) + def test_readonly_field_overrides(self): + """ + Regression test for #22087 - ModelForm Meta overrides are ignored by + AdminReadonlyField + """ + p = FieldOverridePost.objects.create(title="Test Post", content="Test Content") + response = self.client.get('/test_admin/admin/admin_views/fieldoverridepost/%d/' % p.pk) + self.assertEqual(response.status_code, 200) + self.assertContains(response, '<p class="help">Overridden help text for the date</p>') + self.assertContains(response, '<label for="id_public">Overridden public label:</label>', html=True) + self.assertNotContains(response, "Some help text for the date (with unicode ŠĐĆŽćžšđ)") + @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) class LimitChoicesToInAdminTest(TestCase): |
