summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBen Davis <bendavis78@gmail.com>2014-02-18 16:44:33 -0600
committerTim Graham <timograham@gmail.com>2014-03-25 09:33:13 -0400
commit16afffffe87bf8b7de6403329937433ac5096697 (patch)
treea158a517c521c5a2a579b5d97aec5d1ff2ca1ef3 /tests
parent35ed792cf248d6b245e299d13fe47b56f4c6bf42 (diff)
Fixed #22087 -- Made AdminReadonlyField respect ModelForm Meta overrides.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_views/admin.py19
-rw-r--r--tests/admin_views/models.py7
-rw-r--r--tests/admin_views/tests.py14
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):