summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2011-02-19 12:56:25 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2011-02-19 12:56:25 +0000
commit909ee62563f5c9ff7f507028f19ee291a134ea30 (patch)
tree205e50b81488dba4ef8f69e011cde2ee8e3b2eab
parentda4dea5834682e16e446f2a1c671c1989fb42404 (diff)
[1.2.X] Fixed #14355 -- Ensure that help_text is displayed for readonly fields in the admin. Thanks to jester for the report, and to alexbmeng, subsume, wamberg and Julien Phalip for ther work on the patch.
Backport of r15582 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15583 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/admin/helpers.py3
-rw-r--r--django/contrib/admin/templates/admin/includes/fieldset.html4
-rw-r--r--django/contrib/admin/util.py7
-rw-r--r--tests/regressiontests/admin_views/models.py9
-rw-r--r--tests/regressiontests/admin_views/tests.py4
5 files changed, 21 insertions, 6 deletions
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py
index e5d85a674c..101c1e7de3 100644
--- a/django/contrib/admin/helpers.py
+++ b/django/contrib/admin/helpers.py
@@ -1,7 +1,7 @@
from django import forms
from django.conf import settings
from django.contrib.admin.util import flatten_fieldsets, lookup_field
-from django.contrib.admin.util import display_for_field, label_for_field
+from django.contrib.admin.util import display_for_field, label_for_field, help_text_for_field
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist
from django.db.models.fields import FieldDoesNotExist
@@ -145,6 +145,7 @@ class AdminReadonlyField(object):
'name': class_name,
'label': label,
'field': field,
+ 'help_text': help_text_for_field(class_name, form._meta.model)
}
self.form = form
self.model_admin = model_admin
diff --git a/django/contrib/admin/templates/admin/includes/fieldset.html b/django/contrib/admin/templates/admin/includes/fieldset.html
index addfd0854c..6363aeeee4 100644
--- a/django/contrib/admin/templates/admin/includes/fieldset.html
+++ b/django/contrib/admin/templates/admin/includes/fieldset.html
@@ -19,8 +19,8 @@
{{ field.field }}
{% endif %}
{% endif %}
- {% if field.field.field.help_text %}
- <p class="help">{{ field.field.field.help_text|safe }}</p>
+ {% if field.field.help_text %}
+ <p class="help">{{ field.field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
diff --git a/django/contrib/admin/util.py b/django/contrib/admin/util.py
index 792d0b6899..ba86dba769 100644
--- a/django/contrib/admin/util.py
+++ b/django/contrib/admin/util.py
@@ -317,6 +317,13 @@ def label_for_field(name, model, model_admin=None, return_attr=False):
else:
return label
+def help_text_for_field(name, model):
+ try:
+ help_text = model._meta.get_field_by_name(name)[0].help_text
+ except models.FieldDoesNotExist:
+ help_text = ""
+ return smart_unicode(help_text)
+
def display_for_field(value, field):
from django.contrib.admin.templatetags.admin_list import _boolean_icon
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py
index 0c3f70102d..6e0f9997fb 100644
--- a/tests/regressiontests/admin_views/models.py
+++ b/tests/regressiontests/admin_views/models.py
@@ -496,9 +496,12 @@ class LinkInline(admin.TabularInline):
class Post(models.Model):
- title = models.CharField(max_length=100)
- content = models.TextField()
- posted = models.DateField(default=datetime.date.today)
+ title = models.CharField(max_length=100, help_text="Some help text for the title (with unicode ŠĐĆŽćžšđ)")
+ content = models.TextField(help_text="Some help text for the content (with unicode ŠĐĆŽćžšđ)")
+ posted = models.DateField(
+ default=datetime.date.today,
+ help_text="Some help text for the date (with unicode ŠĐĆŽćžšđ)"
+ )
public = models.NullBooleanField()
def awesomeness_level(self):
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index 7d3cc33438..e93ec66e4d 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -2263,6 +2263,10 @@ class ReadonlyTest(TestCase):
self.assertContains(response, '<div class="form-row posted">')
self.assertContains(response, '<div class="form-row value">')
self.assertContains(response, '<div class="form-row ">')
+ self.assertContains(response, '<p class="help">', 3)
+ self.assertContains(response, '<p class="help">Some help text for the title (with unicode ŠĐĆŽćžšđ)</p>')
+ self.assertContains(response, '<p class="help">Some help text for the content (with unicode ŠĐĆŽćžšđ)</p>')
+ self.assertContains(response, '<p class="help">Some help text for the date (with unicode ŠĐĆŽćžšđ)</p>')
p = Post.objects.create(title="I worked on readonly_fields", content="Its good stuff")
response = self.client.get('/test_admin/admin/admin_views/post/%d/' % p.pk)